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

如何在docker compose中运行同一内部版本的多个版本?,docker,docker-compose,Docker,Docker Compose,TL/DR:我可以在docker compose的环境指令中使用.env文件变量吗 我有一个Dockerfile,它使用ARG变量根据环境变量复制文件 在我的docker compose中,我想用不同的配置运行此容器的两个版本 是否有一种方法可以在一个.env文件中设置不同的文件路径,并让它生成两次,如下面的示例所示 还是有更聪明的方法来实现这一点 /.env VERSION_1_PATH=./version1/data VERSION_2_PATH=./version2/data /a

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


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

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

是否有一种方法可以在一个
.env
文件中设置不同的文件路径,并让它生成两次,如下面的示例所示

还是有更聪明的方法来实现这一点


/.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}

定义构建时,可以在compose文件中添加
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
。env
可以默认用于
docker compose.yml
。而且,
环境
也不是用于
构建
,而是用于运行容器


第一,仅供参考。

此设置是构建时选项(类似于
/configure
标记包含不同的库集)还是运行时配置?
version: '3'
services:
  version1:
    build:
      context: ./app
      args:
        - APP_PATH=${VERSION_1_PATH}

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