我正在尝试配置数据库容器 (PostgreSQL),并且我想通过对已启动的实例运行 SQL 命令来配置一些数据库设置。dockerfile 中的 RUN 命令在数据库启动之前运行。
我想我可以创建一个脚本,首先启动 docker 实例,然后推出配置,但这既不便携也不优雅。
有没有办法以某种方式配置 RUN 命令或类似命令在容器实例启动后运行?
在此先感谢您的帮助。
答案1
一种解决方案可能是:
创建一个 bash 脚本,其中包含要在容器内运行的启动命令
COPY
使用命令将该脚本复制到 docker 镜像中更改
RUN
命令以Dockerfile
在启动时运行脚本,而不是postgres
直接调用确保你的脚本在配置命令之前调用
postgres
(就像原始命令一样)RUN
您可能需要脚本在后台运行 postgres:
# Run postgres, but in the background, so we can execute more commands
postgres ... & pg_pid="$!"
# Your configuration commands here
...
# Tell bash not to exit until postgres does
wait $pg_pid
但是,我不知道postgres
在这种情况下docker是否会平稳关闭。(它可能只是杀死shell。)
您还可以RUN
通过指定启动命令来覆盖默认命令docker run ...