[英]how does the Entrypoint command works here
ENTRYPOINT命令如何在以下docker compose文件中给出。 我在副本集mongo docker-compose中找到了docker compose文件。 “ usr / bin / mongod ”是ENTRYPOINT中给出的第一个命令,我的问题是usr / bin / mongod是否会启动本地mongo并运行它具有docker容器,否则它将从存储库中提取mongo映像并将其作为容器如果是这样,为什么我们使用“ usr / bin / mongod ”。
version: "3"
services:
mongo-1:
hostname: mongo-1
container_name: mongo-1
image: mongo:4.0
ports:
- "127.0.0.1:28000:28000"
volumes:
- ./mongo-1/data:/data/db
restart: always
entrypoint: [ "/usr/bin/mongod", "--port", "28000", "--bind_ip_all", "--replSet", "rs1" ]
使用这个撰写文件,我能够从主机连接在端口28000中运行的mongoDB但是当我在compose文件中用CMD替换ENTRYPOINT时 ,我无法从主机连接mongoDB。
您正在使用图像“mongo:4.0”,它具有自己的ENTRYPOINT和CMD定义。 当您在docker-compose.yml中重新声明其中任何一个时,您将覆盖原始的。
ENTRYPOINT是主命令,CMD只是发送到主命令的参数。 因此,当您使用有效命令定义ENTRYPOINT时,它适用于您。 如果将其更改为CMD,则运行时是原始的ENTRYPOINT(“docker-entrypoint.sh”)和新命令。
您的入口点使用容器内部基于指定图像的二进制文件。
供参考,你可以看到官方图片的Dockerfile: https : //github.com/docker-library/mongo/blob/40056ae591c1caca88ffbec2a426e4da07e02d57/4.0/Dockerfile
最后定义了ENTRYPOINT和CMD。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.