【问题标题】:Reading a specific Docker env_file for a container读取容器的特定 Docker env_file
【发布时间】:2020-01-13 14:20:33
【问题描述】:

我有一个项目,在 Maven 项目的根目录下有一个 .env 文件,其中包含项目相关信息。我想在项目的模块目录中有一个名为.creds.env 的单独的env 文件,以便我可以将它添加到.gitignore.creds.env 文件包含以下格式的用户名和密码:

USER_NAME=user
USER_PASSWORD=password

docker-compose.yml 中,我有以下内容可以读取服务的.creds.env 文件:

  myservice:
    env_file:
      - ./module/.creds.env
    container_name: myservice
    build:
      context: ./
      dockerfile: ./module/Dockerfile
      args:
        USER_NAME: ${USER_NAME}
        USER_PASSWORD: ${USER_PASSWORD}

但是用户名和密码只能从根.env文件中读取,而不是从模块.creds.env中读取

项目结构如下:

|__ .env
|__ docker-compose.yml
|__ module
     |__ Dockerfile
     |__ .creds.env

我需要帮助了解如何读取 myservice 容器的 .creds.env 文件并继续读取 .env 文件以获取其他所有内容。

【问题讨论】:

    标签: docker docker-compose environment-variables dockerfile


    【解决方案1】:

    您应该删除根.env 文件中的USER_NAMEUSER_PASSWORD

    听起来您可以假设您的环境将始终包含.creds.env 文件。

    如果您需要当前在 .env 中引用的默认值,您可以在撰写文件中使用 shell 参数替换:

      myservice:
        env_file:
          - ./module/.creds.env
        container_name: myservice
        build:
          context: ./
          dockerfile: ./module/Dockerfile
          args:
            USER_NAME: ${USER_NAME:-user}
            USER_PASSWORD: ${USER_PASSWORD:-mypass}
    

    【讨论】:

      猜你喜欢
      • 2017-07-04
      • 2021-01-31
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      • 2016-10-25
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多