Docker ENTRYPOINT和CMD如何在基本图像和当前图像之间工作?
Docker ENTRYPOINT和CMD如何在基本图像和当前图像之间工作?,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,somedockerhub/backend base具有ENTRYPOINT[“ENTRYPOINT.sh”] 其中entrypoint.sh为: #!/bin/bash . /appenv/bin/activate exec $@ 以下是docker compose文件: app: build: ../../ dockerfile: docker/release/Dockerfile links: - dbc volumes_from: - webroot
somedockerhub/backend base
具有ENTRYPOINT[“ENTRYPOINT.sh”]
其中entrypoint.sh
为:
#!/bin/bash
. /appenv/bin/activate
exec $@
以下是docker compose文件:
app:
build: ../../
dockerfile: docker/release/Dockerfile
links:
- dbc
volumes_from:
- webroot
environment:
DJANGO_SETTINGS_MODULE: todobackend.settings.release
MYSQL_HOST: db
MYSQL_USER: user1
MYSQL_PASSWORD: passwd
command:
- uwsgi
- "--socket /var/www/someapp/someapp.sock"
- "--chmod-socket=666"
- "--module someapp.wsgi"
- "--master"
- "--die-on-term"
其中
docker/release/Dockerfile
:
FROM somedockerhub/backend-base:latest
# Copy application artifacts
COPY target /wheelhouse
# Install application
RUN . /appenv/bin/activate && \
pip install --no-index -f /wheelhouse someapp
rm -rf /wheelhouse
ENTRYPOINT ["echo"]
(一) 对于由
app
服务启动的容器
ENTRYPOINT[“ENTRYPOINT.sh”]
是否在ENTRYPOINT[“echo”]
之前执行
(二)
假设当前图像中没有入口点,当前图像是否执行基本图像入口点,然后
命令
指令启动uwsgi
带pid 1的过程
对于应用程序服务启动的容器
ENTRYPOINT[“ENTRYPOINT.sh”]是否在ENTRYPOINT之前执行
[“回声”]
否,ENTRYPOINT[“echo”]
覆盖基本图像的ENTRYPOINT[“ENTRYPOINT.sh”]
因此,ENTRYPOINT[“echo”]
将运行并接收:
命令:
-uwsgi
-“--socket/var/www/someapp/someapp.sock”
-“--chmod socket=666”
-“--模块someapp.wsgi”
-“--主人”
-“--按期限死亡”
作为论据
假设当前图像中没有入口点,当前图像中有吗
执行基本映像入口点,然后启动命令指令
带pid 1的uwsgi过程
是entrypoint.sh
将运行。它将接收命令
值作为参数
entrypoint
codeexec$@
表示:执行所有脚本(entrypoint.sh
)参数(uwsgi…
)
exec
by不会生成新进程,而是将uwsgi
加载到现有进程的内存中。因为exec
进程是用pid 1启动的,uwsgi
将接收pid 1。只是为了添加,基本映像和当前映像中没有CMD
指令,只是为了进一步了解。。。如果当前图像没有入口点指令?当前图像是否运行基本图像入口点?我的第二个问题是在这个上下文中。。。查询编辑回答您的问题dockerfile还有一个问题-