gpt4 book ai didi

postgresql - 如果 ENTRYPOINT 未完成,Dockerfile 不会运行 CMD

转载 作者:行者123 更新时间:2023-11-29 14:09:37 25 4
gpt4 key购买 nike

我正在尝试运行一个运行 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?

这可能吗?

最佳答案

这不是 CMDENTRYPOINT 的工作方式。我建议阅读 https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact并检查图表以更好地了解 ENTRYPOINTCMD 如何相互交互。

也就是说,如果您只想导入一个 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 - 如果 ENTRYPOINT 未完成,Dockerfile 不会运行 CMD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44927422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com