docker compose文件中的命令键是如何工作的

docker compose文件中的命令键是如何工作的,docker,docker-compose,Docker,Docker Compose,我试图理解docker示例应用程序“示例投票应用程序”。我正在尝试用docker compose构建应用程序。我对docker compose文件中“command”键的行为和docker文件中的CMD指令感到困惑。该应用程序由一个名为“投票”的服务组成。docker-compose.yml文件中投票服务的配置为: services: # we list all our application services under this 'services' section. vote:

我试图理解docker示例应用程序“示例投票应用程序”。我正在尝试用docker compose构建应用程序。我对docker compose文件中“command”键的行为和docker文件中的CMD指令感到困惑。该应用程序由一个名为“投票”的服务组成。docker-compose.yml文件中投票服务的配置为:

services: # we list all our application services under this 'services' section.
  vote:  
    build: ./vote # specifies docker to build the 
    command: python app.py
    volumes:
     - ./vote:/app
    ports:
      - "5000:80"
    networks:
      - front-tier
      - back-tier
./vote目录中提供的Dockerfile配置如下:

# Using official python runtime base image
FROM python:2.7-alpine

# Set the application directory
WORKDIR /app

# Install our requirements.txt
ADD requirements.txt /app/requirements.txt
RUN pip install -r requirements.txt

# Copy our code from the current folder to /app inside the container
ADD . /app

# Make port 80 available for links and/or publish
EXPOSE 80

# Define our command to be run when launching the container
CMD ["gunicorn", "app:app", "-b", "0.0.0.0:80", "--log-file", "-", "--access-logfile", "-", "--workers", "4", "--keep-alive", "0"]

我的疑问是,当我尝试使用docker compose up构建应用程序时,将执行哪个命令(“python app.py”或“gunicorn app:app-b…”),docker compose
命令:
,或调用图像名称后的
docker run
中的所有内容将覆盖docker文件
CMD

如果图像还有一个
入口点
,则此处提供的命令与Dockerfile
CMD
的方式相同

对于典型的Compose设置,您不需要指定
命令:
。在Python/Flask上下文中,最明显的有用之处是,如果您也在使用芹菜这样的排队系统,并且使用相同的共享代码库:您可以使用
命令:
从构建的映像运行芹菜工作程序,而不是Flask应用程序