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
code
exec$@
表示:执行所有脚本(
entrypoint.sh
)参数
(uwsgi…


exec
by不会生成新进程,而是将
uwsgi
加载到现有进程的内存中。因为
exec
进程是用pid 1启动的,
uwsgi
将接收pid 1。

只是为了添加,基本映像和当前映像中没有
CMD
指令,只是为了进一步了解。。。如果当前图像没有入口点指令?当前图像是否运行基本图像入口点?我的第二个问题是在这个上下文中。。。查询编辑回答您的问题dockerfile还有一个问题-