当前位置: 首页 > 知识库问答 >
问题:

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

康赞
2023-03-14

我正在尝试理解docker示例应用程序“示例投票应用程序”。我正在尝试使用docker-compose构建应用程序。我与docker compose文件中“命令”键的行为和Dockerfile中的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

./投票目录中提供的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"]

我在这里的疑问是哪个命令('pythonapp.py'或'gunicorn app: app-b...')将被执行,当我尝试使用docker-compose up构建应用程序时

共有1个答案

史阳晖
2023-03-14

Docker Compose命令:,或在图像名称后调用Docker run中的所有内容,覆盖Dockerfile。

如果图像也有一个入口点,那么您在这里提供的命令将作为参数传递给入口点,方式与Dockerfile CMD相同。

对于典型的Compose设置,您不需要指定命令:。在Python/Flask上下文中,它最明显有用的地方是如果您还使用具有相同共享代码库的Celery等排队系统:您可以使用命令:在您构建的映像上运行Celery工作人员,而不是Flask应用程序。

 类似资料:
  • 主要内容:1.分支操作,2.暂存操作,3.回退操作,4.标签操作,5.常规操作,6.git创建项目仓库,7.忽略已加入到版本库中的文件,8.取消忽略文件,9.拉取、上传免密码1.分支操作 git branch 创建分支 git branch -b 创建并切换到新建的分支上 git checkout 切换分支 git branch 查看分支列表 git branch -v 查看所有分支的最后一次操作 git branch -vv 查看当前分支 git brabch -b 分支名 origin/分支

  • 这是一个PowerShell脚本,用于刷新Internet代理设置,我从批处理文件中获取该脚本,以禁用Internet选项代理服务器。 我想在批处理文件或命令提示符中作为单个命令运行它,例如 这是我从如何压缩PowerShell脚本以适合一行中学到的。 我试图将它完全合并成一行并执行它。 但它返回给我一个错误。 我该怎么解决呢?有没有更好的方法来浓缩上述函数?

  • 问题内容: 我想确切地知道“ Is”命令在Linux和Unix中如何工作。 据我所知,ls将&s派生到Linux / Unix shell,然后获取(当前文件树的输出。例如/ home / ankit /)。我需要更详细的说明,因为我不确定调用fork之后会发生什么。 任何人都可以详细解释“ ls”命令的功能吗? 问题答案: ls不分叉。Shell会分叉并执行,以便运行任何未内置的命令,它可以运行

  • 我已经下载了jdk 1.8.0\u 131 当我打开命令提示符并编写以下命令-java-version时,它会给出输出 但是当我编写以下命令时:javac-version它会给我输出 我已经编辑了系统变量路径-C:\Progra~1\Java\jdk1.8.0_131\bin; 当我执行以下命令时:"C:\Program Files\Java\jdk1.8.0_131\bin\javac"-ver

  • 我试图理解关键字的用途,显然它允许我们对泛型进行反思。 然而,当我把它排除在外时,它的工作也一样好。有人想解释一下这什么时候会有实际的不同吗?

  • 我有一个带有各种WP-CLI命令的bash脚本,可以运行备份、检查和优化数据库表、运行安全漏洞检查、检查可用的核心、插件和主题更新,然后通过电子邮件将报告发送给我。 如果我从命令行运行这个脚本,它可以完美地工作。但是,如果我调度一个cronjob,脚本将运行,但是所有WP命令的输出如下: /usr/local/bin/dev-maintention-check.bash:第70行:wp:comma