【发布时间】:2021-05-30 03:17:47
【问题描述】:
IBM 为 DB2 提供了一个 Docker 映像,可在 https://hub.docker.com/r/ibmcom/db2 获得该映像
如 Docker Hub 中所述,可以通过创建派生的 Docker 镜像来配置数据库,该镜像带有附加脚本(添加在 /var/custom 中)以及所有必要的自定义(例如创建架构)。
FROM ibmcom/db2
RUN mkdir /var/custom
COPY createschema.sh /var/custom
RUN chmod a+x /var/custom/createschema.sh
此脚本在容器启动时执行,在 Db2 设置完成之后。
有没有办法构建一个预先执行脚本的 Docker 映像?
我希望在映像本身中配置数据库,以便从映像生成的新容器在启动时不必执行初始化步骤。
脚本不能仅在 Dockerfile 中使用 RUN 命令执行,因为 DB2 设置仅在容器启动时执行。有没有办法触发这个设置,然后直接在 Dockerfile 中运行自定义配置脚本?
如果我尝试执行设置脚本(这是官方图像中的 ENTRYPOINT,我可以对其进行更改以自定义图像):
FROM ibmcom/db2
ENV LICENSE=accept
RUN /var/db2_setup/lib/setup_db2_instance.sh
启动DB2时出现故障不知道如何解决:
Starting DB2...
02/28/2021 09:54:31 0 0 SQL1042C An unexpected system error occurred.
我可以从正在运行的容器(使用docker commit)创建映像,但我希望通过 Dockerfile 自动执行映像构建过程。
【问题讨论】: