相关疑难解决方法(0)

在构建阶段将docker-compose中的环境变量传递给容器

我正在尝试使用单个Dockerfile,多个docker-compose文件和多个envoronment_variables文件为多个环境创建配置.我需要它为每个环境使用具有python依赖关系的不同文件.

比方说,我们web在两个环境中创建服务:developmentproduction.为此,我创建了以下文件结构:

docker-compose-dev.yml
docker-compose-prod.yml
envs/
  dev.env
  prod.env
web/
  Dockerfile
  requirements_dev.txt 
  requirements_prod.txt
Run Code Online (Sandbox Code Playgroud)

目标是在容器的进程中实例化requirements_*.txt文件的正确名称.根据文档,我尝试了这种天真的方法,似乎不起作用:Dockerfilebuild

  1. 将名称定义为环境变量:
    • ENVS/dev.env: REQUIREMENTS=requirements_dev.txt
    • ENVS/prod.env: REQUIREMENTS=requirements_prod.txt
  2. Dockerfile中使用此环境变量:

    FROM python:3.5
    ENV PYTHONUNBUFFERED 1
    ENV APP_ROOT /usr/src/app
    ...
    COPY $REQUIREMENTS $APP_ROOT/
    RUN pip install -r $APP_ROOT/$REQUIREMENTS
    
    Run Code Online (Sandbox Code Playgroud)
  3. docker-compose配置中导入相应的定义:

    version: '2'
    
    services:
        web:
            build: ./web
            env_file:
                - envs/dev.env   # in docker-compose-dev.yml
                - envs/prod.env   # in docker-compose-prod.yml
            ...
    
    Run Code Online (Sandbox Code Playgroud)

当我运行时docker-compose up --build docker-compose-dev.yml, …

docker docker-compose

14
推荐指数
1
解决办法
6713
查看次数

标签 统计

docker ×1

docker-compose ×1