Asi*_*mez 0 postgresql cmd docker dockerfile docker-entrypoint
我正在尝试运行一个运行 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
Run Code Online (Sandbox Code Playgroud)
入口点没有完成,因为它运行 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
Run Code Online (Sandbox Code Playgroud)
当从基于此构建的镜像启动容器时Dockerfile,默认ENTRYPOINT脚本将启动一个临时 PostgreSQL 实例,等待它准备就绪,导入您的数据,然后重新启动以提供连接服务。