【问题标题】:How to specify environment variables with docker image in docker compose如何在 docker compose 中使用 docker image 指定环境变量
【发布时间】:2021-08-06 08:25:45
【问题描述】:

我有一个工作流程,我在其中构建一个特定的图像,然后(在推送到 ECR 存储库,然后将其拉到 AWS 服务器之后)基本上使用 docker-compose 文件运行它。我的 docker compose 文件如下所示:

version: "3.8"
services:
  web:
    image: <my-aws-server>/my-repo:latest
    command: gunicorn vms.wsgi:application --bind 0.0.0.0:8000
    expose:
      - 8000
  nginx:
    build: ../nginx
    ports:
      - 1337:80
    depends_on: 
      - web

我的 dockerfile 是这样的:

FROM python:3
ENV PYTHONUNBUFFERED=1
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
EXPOSE 8000
CMD [ "python", "manage.py", "runserver", "0.0.0.0:8000"]

我希望能够在我的 docker-compose 中做这样的事情:

version: "3.8"
services:
  web:
    image: <my-aws-server>/my-repo:latest
    env: SECRET_PASSWORD #note change here
    command: gunicorn vms.wsgi:application --bind 0.0.0.0:8000
    expose:
      - 8000
  nginx:
    build: ../nginx
    ports:
      - 1337:80
    depends_on: 
      - web

我指定了环境变量,它们存储在服务器上的一个文件中。有什么办法可以做到这一点吗?如果图像文件只是二进制文件,也许是不可能的。

或者当我在我的 GitHub 操作中构建图像时,我是否必须从一开始就实际传递环境变量,这里:

    steps:
      - uses: actions/checkout@v2
        name: Check out code

      - uses: mr-smithers-excellent/docker-build-push@v5
        name: Build & Push Docker image
        with:
          image: my-image
          registry: ${{ secrets.AWS_ECR_REGISTRY }}
          tags: latest
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}

编辑:在我的 GitHub 操作中,我尝试了这样的操作:

      - name: Start new container
        run: ssh staging 'cd my_dir; sudo docker-compose --env-file ~/code/secrets/.env -f docker-compose.prod.yml up -d'

但这似乎不起作用。我在那里做错了什么吗?还是应该按预期工作,该文件中的任何环境变量都将在预构建的映像中使用? (我不会再次构建它,只是启动图像,从 docker compose 文件中可以看出)。

【问题讨论】:

    标签: docker docker-compose environment-variables dockerfile github-actions


    【解决方案1】:

    env_file 指令。这将在运行时将变量从指定文件传递到容器。

    参考:

    【讨论】:

    • 啊是的!所以我在我的 GitHub 操作代码中尝试了这个(只是在上面进行了编辑),但它似乎不太奏效。我错过了什么吗?
    • 该指令适用于您的docker-compose.yml
    • 啊,我刚刚查看了您链接的文档,非常感谢,这正是我想要的!
    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2021-09-02
    • 2017-06-18
    • 1970-01-01
    • 2018-12-25
    • 2019-12-18
    相关资源
    最近更新 更多