通过Dockerfile构建postgresql数据库镜像初始化表数据
- 1.编写Dockerfile
- 2.构建镜像
1.编写Dockerfile
#基础镜像
FROM postgres:12# 环境变量,配置数据库用户名和密码
ENV POSTGRES_USER postgres
ENV POSTGRES_PASSWORD 123456# 将初始化数据库的脚本复制到docker镜像中
COPY ./all.sql /docker-entrypoint-initdb.d/# 启动脚本
CMD ["docker-entrypoint.sh", "postgres"]
- 将名为 all.sql 的 SQL 文件复制到 /docker-entrypoint-initdb.d/ 目录中。这是一个特殊目录,容器启动时会自动执行该目录下的所有 SQL 文件
- CMD [“docker-entrypoint.sh”, “postgres”] 是用于在 Docker
镜像中指定容器默认的启动命令。当容器启动时,Docker 将会运行这个命令。
在这个特定的例子中,docker-entrypoint.sh 是 PostgreSQL 镜像中的一个脚本文件,它用于启动
PostgreSQL 服务。postgres 参数告诉 docker-entrypoint.sh 脚本以管理员模式启动
PostgreSQL 数据库。 因此,当您运行基于这个 Docker 镜像创建的容器时,容器首先执行
docker-entrypoint.sh 脚本,并以管理员模式启动 PostgreSQL 服务 - all.sql为sql语句,如果需要在指定的数据库中进行创建表等操作,可以在sql文件中添加创建数据库语句,例如下图。
2.构建镜像
目的是为了让数据库镜像中有初始化的数据库数据,方便后续使用。
docker build -t test_postgres:12 -f PostgresDockerfile --squash .