gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:44:41 25 4
gpt4 key购买 nike

TL/DR:我可以使用 .env docker-compose 中的文件变量 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}

最佳答案

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

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

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

并且无需定义 .envenv_file如果只是想在构建中使用它作为 .env可以默认用于 docker-compose.yml .而且, environment也不适用于 build , 是为了 running container .

example , 供引用。

关于docker - 如何在 docker-compose 中运行同一构建的多个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56122097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com