如果 ENTRYPOINT 未完成,Dockerfile 不会 运行 CMD
Dockerfile doesn't run the CMD if the ENTRYPOINT isn't finished
我正在尝试 运行 一个 运行 PostgreSQL 的 Dockerfile,然后向其中添加一些表。
这是我的 Dockerfile:
FROM postgres:9.6
MAINTAINER agomez@ikerlan.es
USER postgres
ADD ./backup.sql /backup.sql
ADD ./deploy/import_database.sh /import_database.sh
USER root
RUN chmod +x /import_database.sh
USER postgres
ENTRYPOINT ./docker-entrypoint.sh postgres
CMD ./import_database.sh
入口点未完成,因为它 运行 是 postgres 服务器。
例如,在 运行 进入 ENTRYPOINT 20 秒后,我如何 运行 CMD,但没有完成 ENTRYPOINT?
可能吗?
这不是 CMD
和 ENTRYPOINT
的工作方式。我建议阅读 https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact 并检查图表,以便更好地理解 ENTRYPOINT
和 CMD
是如何相互作用的。
也就是说,如果您只想在 运行 时导入 SQL 文件或 运行 脚本,官方 PostgreSQL 图像已经有了你涵盖了。有关如何执行此操作的信息,请参阅 https://github.com/docker-library/docs/tree/master/postgres#how-to-extend-this-image。
在您的 Dockerfile
情况下(如果您只想导入 SQL 文件)的一个例子是:
FROM postgres:9.6
ADD ./backup.sql /docker-entrypoint-initdb.d/backup.sql
从基于此 Dockerfile
的映像构建容器时,默认 ENTRYPOINT
脚本将启动一个临时 PostgreSQL 实例,等待它准备就绪,导入您的数据,然后重新启动以提供连接。
我正在尝试 运行 一个 运行 PostgreSQL 的 Dockerfile,然后向其中添加一些表。
这是我的 Dockerfile:
FROM postgres:9.6
MAINTAINER agomez@ikerlan.es
USER postgres
ADD ./backup.sql /backup.sql
ADD ./deploy/import_database.sh /import_database.sh
USER root
RUN chmod +x /import_database.sh
USER postgres
ENTRYPOINT ./docker-entrypoint.sh postgres
CMD ./import_database.sh
入口点未完成,因为它 运行 是 postgres 服务器。 例如,在 运行 进入 ENTRYPOINT 20 秒后,我如何 运行 CMD,但没有完成 ENTRYPOINT?
可能吗?
这不是 CMD
和 ENTRYPOINT
的工作方式。我建议阅读 https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact 并检查图表,以便更好地理解 ENTRYPOINT
和 CMD
是如何相互作用的。
也就是说,如果您只想在 运行 时导入 SQL 文件或 运行 脚本,官方 PostgreSQL 图像已经有了你涵盖了。有关如何执行此操作的信息,请参阅 https://github.com/docker-library/docs/tree/master/postgres#how-to-extend-this-image。
在您的 Dockerfile
情况下(如果您只想导入 SQL 文件)的一个例子是:
FROM postgres:9.6
ADD ./backup.sql /docker-entrypoint-initdb.d/backup.sql
从基于此 Dockerfile
的映像构建容器时,默认 ENTRYPOINT
脚本将启动一个临时 PostgreSQL 实例,等待它准备就绪,导入您的数据,然后重新启动以提供连接。