首页 > 解决方案 > echo 告诉我我的环境变量已定义,但 docker-compose 告诉我“未设置变量”。如何将它们传递给 docker-compose?

问题描述

我正在使用 Docker v19.03.13 。在我的外壳中,我定义了一些环境变量......

davea$ echo $AZ_SQL_TP_SRVR
localhost
davea$ echo $AZ_SQL_TP_DB
myDB

我想在我的 docker-compose.yml 文件中引用这些内容,该文件位于...

version: "3.2"
services:

  sqlserver-db:
    build:
      context: ./
      args:
        - AZ_SQL_TP_SRVR=${AZ_SQL_TP_SRVR}
        - AZ_SQL_TP_PORT=1433
        - AZ_SQL_TP_DB=${AZ_SQL_TP_DB}
        - AZ_SQL_TP_USERNAME=${AZ_SQL_TP_USERNAME}
        - AZ_SQL_TP_PASSWORD=${AZ_SQL_TP_PASSWORD}
    container_name: sqlserver-db
    ports:
      - ${AZ_SQL_TP_PORT}:1433
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=${AZ_SQL_TP_PASSWORD}
      - TZ=${TZ}
    volumes:
      - ../../mydb/mypb:/sqlscripts
    tty: true
    command: /bin/bash entrypoint.sh

但是当我运行我的 docker 实例时,我收到这些警告,抱怨无法找到变量...

davea$ docker-compose up -d
WARNING: The AZ_SQL_TP_SRVR variable is not set. Defaulting to a blank string.
WARNING: The AZ_SQL_TP_DB variable is not set. Defaulting to a blank string.

我还需要做什么才能让我的 docker-compose 文件识别我在 shell 中定义的环境变量?

标签: dockershelldocker-composeenvironment-variables

解决方案


正如评论中提到的那样,您确实分配了AZ_SQL_TP_DB=myDB,这还不够。

您可以选择其中任何一个来使其正常工作。

  • 选项1

    $ export AZ_SQL_TP_DB=myDB
    $ docker-compose up -d
    
  • 选项 2

    $ AZ_SQL_TP_DB=myDB docker-compose up -d
    

或在下一个内容.env的同一文件夹中添加文件:docker-compose.yaml

$ cat .env
AZ_SQL_TP_SRVR=localhost
AZ_SQL_TP_DB=myDB
$ docker-compose up -d

推荐阅读