我想构建一个PostgreSQL镜像,它只包含一些额外的.sql文件,以便在启动时执行
Dockerfile:
FROM postgres:11.9-alpine
USER postgres
WORKDIR /
COPY ddl/*.sql /docker-entrypoint-initdb.d/
然后我构建图像:
docker build -t my-postgres:1.0.0 -f Dockerfile .
并运行集装箱
docker run -d --name my-database
-e POSTGRES_PASSWORD=abc123
-p 5432:5432
my-postgres:1.0.0
它的输出是容器id
33ed596792a80fc08f37c7c0ab16f8827191726b8e07d68ce03b2b5736a6fa4e
检查正在运行的容器没有返回任何结果:
Docker container ls
但如果我明确地启动它,它就可以
docker start my-postgres
在原始的PostgreSQL映像中,Docker run命令已经启动了数据库。为什么在建立了自己的形象之后却没有呢?
事实证明,其中一个复制的.sql文件无法执行,根据此文档,它使入口点脚本退出。修复SQL解决了问题,容器通过Docker运行正常启动