【问题标题】:Docker: Why does my project have a .env file?Docker:为什么我的项目有一个 .env 文件?
【发布时间】:2018-08-04 17:17:09
【问题描述】:

我正在从事一个涉及 Docker 的小组项目,该项目有一个 .env 文件,如下所示:

DATABASE_URL=xxx
DJANGO_SETTINGS_MODULE=xxx
SECRET_KEY=xxx

这不能在Dockerfile 中声明吗?如果是这样,制作.env 文件有什么好处?

不确定我是否朝着正确的方向前进,但this Docker Docs page 说(强调我自己的):

您的配置选项可以包含环境变量。撰写 使用 shell 环境中的变量值,其中 docker-compose 正在运行。例如,假设外壳包含 POSTGRES_VERSION=9.3 你提供这个配置:

db:

  `image: "postgres:${POSTGRES_VERSION}"`

当您使用此配置运行 docker-compose 时,Compose 会在 shell 中查找 POSTGRES_VERSION 环境变量并将其值代入。对于此示例,Compose 在运行配置之前将图像解析为 postgres:9.3

如果未设置环境变量,Compose 将替换为空字符串。在上面的例子中,如果POSTGRES_VERSION没有设置,图片选项的值为postgres:

您可以使用 Compose 自动查找的 .env 文件设置环境变量的默认值。在 shell 环境中设置的值会覆盖在 .env 文件中设置的值。

如果我们使用.env 文件,那么我不会在docker-compose.yml 文件中看到一些${...} 语法吗?不过,我没有看到类似的东西。

这是我们的docker-compose.yml 文件:

version: '3'

services:
    server:
        build:
            context: ./server
            dockerfile: Dockerfile
        env_file: .env.dev
        command: python3 manage.py runserver 0.0.0.0:8000
        volumes:
            - ./server:/app
        ports:
            - "8500:8000"
        depends_on:
            - db
        stdin_open: true
        tty: true

    db:
        image: postgres

    client:
        build:
            context: ./client
            dockerfile: Dockerfile
        command: bash -c "npm install; npm run start"
        volumes:
            - ./client:/app
            - /app/node_modules
        ports:
            - "3000:3000"
        depends_on:
            - server

【问题讨论】:

    标签: docker docker-compose environment-variables dockerfile


    【解决方案1】:

    想法可能有一个地方可以将机密与 docker-compose.yml 分开,然后您可以将其保存在 VCS 中和/或共享。

    【讨论】:

    • 我明白了——为什么要保密?这样 docker-compose.yml 可以供其他人公开使用,然后在自定义文件(.env)中设置私有参数?
    • 将您的数据库主机名或会话 cookie 签名密钥编译成任何人都可以轻松读取的二进制文件(这将是把它放在 Dockerfile 中的效果)不是一个好主意。每次部署映像时,这些事情可能都会有所不同。
    • 这是有道理的。谢谢@DavidMaze
    猜你喜欢
    • 2022-11-07
    • 2023-03-25
    • 1970-01-01
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 2012-05-08
    • 2019-01-26
    相关资源
    最近更新 更多