如果docker-compose.yml和Dockerfile都指定了具有优先权的环境变量?
如果我有如果docker-compose.yml和Dockerfile都指定了具有优先权的环境变量?,docker,docker-compose,Docker,Docker Compose,如果我有Dockerfile: FROM ubuntu:18.04 ENV NAME=Dockerfile-wins CMD echo $NAME 和一个带有以下内容的docker compose.yml: version: '3' services: myservice: build: . container_name: myservice environment: - NAME=docker-compose-wins 当我运行docker
Dockerfile
:
FROM ubuntu:18.04
ENV NAME=Dockerfile-wins
CMD echo $NAME
和一个带有以下内容的docker compose.yml
:
version: '3'
services:
myservice:
build: .
container_name: myservice
environment:
- NAME=docker-compose-wins
当我运行
docker compose up myservice时
哪一个会胜出,以及为什么胜出?docker compose会胜出,因为它会覆盖Dockerfile中的内容。Dockerfile中指定的是默认值。并且可以通过使用docker命令来覆盖,docker compose就是这样做的
这在文档中有记录
在封面下,docker compose正在运行
docker run -e VARIABLE=VALUE
正确:)环境变量用于将值传递给容器,并将覆盖Dockerfile中定义的默认值。我还想提到“docker run-e”参数。