Postgresql 容器是数据库服务器。如何提问';s Dockerfile是否在容器启动后完成其构造?
我正在使用Postgresql 容器是数据库服务器。如何提问';s Dockerfile是否在容器启动后完成其构造?,postgresql,docker,Postgresql,Docker,我正在使用postgis/postgisDocker映像为我的应用程序设置数据库服务器 数据库服务器必须先创建一个表空间,然后创建一个数据库 然后,每当另一个应用程序从另一个容器启动时,它将运行一个Liquibase脚本,该脚本将在需要时更新数据库模式(创建表、索引…) 在终端上,为了准备数据库容器,我运行以下命令: #运行裸体Postgis容器 sudo docker run--名称ecoemploi postgis -e POSTGRES_PASSWORD=POSTGRES -d-v/dat
postgis/postgis
Docker映像为我的应用程序设置数据库服务器
Liquibase
脚本,该脚本将在需要时更新数据库模式(创建表、索引…)#运行裸体Postgis容器
sudo docker run--名称ecoemploi postgis
-e POSTGRES_PASSWORD=POSTGRES
-d-v/data/comptes france:/data/comptes france postgis/postgis
#发送“bash-level”命令为表空间创建目录
sudo docker exec-it ecoemploi postgis
bin/sh-c'mkdir/tablespace&&chown postgres:postgres/tablespace'
然后,为了完成步骤1,我必须运行SQL语句以PostGIS
的角度创建表空间,并通过create database
创建数据库
我在容器的psql
下手动连接自己:
sudo docker exec-it ecoemploi postgis bin/sh
-c'exec psql-h“$POSTGRES\u PORT\u 5432\u TCP\u ADDR”
-p“$POSTGRES_PORT_5432_TCP_PORT”-U POSTGRES'
我运行以下命令:
创建表空间数据位置'/TABLESPACE';
创建数据库表空间数据;
出口
但是我希望从一个Dockerfile
创建一个容器,完成所有需要的工作。困难在于必须分两部分进行:
docker entrypoint.sh
后进行完成所有这些步骤后,编写
Dockerfile
创建容器的好方法是什么?要运行容器,Dockerfile必须是功能齐全的。
您必须在bash文件中输入查询,并且在最后一行,您必须使用此bash脚本输入入口点“基于官方图像”,因此它应该能够使用/docker ENTRYPOINT initdb.d
机制。第一次启动数据库容器时,将运行放入该目录中的任何文件。将PostGIS扩展安装到默认数据库中
这意味着您可以将构建时设置直接放入Dockerfile,并将启动时脚本复制到该目录中
来自postgis/postgis:12-3.0
运行mkdir/tablespace&&chown postgres:postgres/tablespace
复制createdb.sql/docker-entrypoint-initdb.d/20-createdb.sql
#从基本图像使用默认入口点/CMD
对于您描述的特定设置,这可能不是必需的。每个数据库运行在一个独立的文件系统空间中,并以一个空的数据目录开始,因此不需要创建一个备用数据目录;Docker的风格是,如果需要独立存储,只需运行多个数据库。同样,base
postgres
图像将在第一次启动时为您创建一个数据库(由postgres\u DB
环境变量命名)。请给出问题的具体答案和示例