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}
答案 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,仅供参考。