如果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”参数。