如何在docker-compose中运行同一版本的多个版本?

时间:2019-05-14 02:11:44

标签: docker docker-compose

TL / DR:我可以在docker-compose的.env指令中使用environment文件变量吗?


我有一个Dockerfile,它使用ARG变量根据环境变量复制文件。

在我的docker-compose中,我想使用不同的配置运行此容器的两个版本。

是否可以在单个.env文件中设置不同的文件路径,并使其生成两次,就像下面的示例一样?

还是有更聪明的方法来实现这一目标?


/
/.env
/docker-compose.yml
/app
/app/Dockerfile
/version1/data
/version2/data

/。env


VERSION_1_PATH=./version1/data
VERSION_2_PATH=./version2/data

/ app / Dockerfile

FROM node:latest

ARG APP_PATH             # pull this environment variable
COPY $APP_PATH /var/app/ # use it to copy source to the same generic destination

/docker-compose.yml

version: "3"
services:
  version1:
    build: ./app
    container_name: version1
    env_file: 
      - '.env'
    environment:
      APP_PATH: ${VERSION_1_PATH}

  version2:
    build: ./app
    container_name: version2
    env_file: 
      - '.env'
    environment:
      APP_PATH: ${VERSION_2_PATH}

1 个答案:

答案 0 :(得分:1)

定义构建时,您可以在撰写文件中添加args,如下所示:

version: '3'
services:
  version1:
    build:
      context: ./app
      args:
        - APP_PATH=${VERSION_1_PATH}

  version2:
    build:
      context: ./app
      args:
        - APP_PATH=${VERSION_2_PATH}

如果只想在.env中使用env_file,则无需在.env中定义docker-compose.yml。而且,environment也不适用于build,它适用于running container

一个example,仅供参考。