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}
并且无需定义
.env
在 env_file
如果只是想在构建中使用它作为 .env
可以默认用于 docker-compose.yml
.而且,environment
也不适用于 build
, 是为了 running container
.一 example , 供引用。
关于docker - 如何在 docker-compose 中运行同一构建的多个版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56122097/