geographica/postgis本镜像由Geographica构建,基于PostgreSQL 12.2开发版本,集成PostGIS 3.0.1空间扩展及GEOS 3.8.0、PROJ 6.3.1依赖库,提供完整的空间数据库功能。主要用于地理信息系统(GIS)开发、空间数据存储与管理,支持数据持久化、配置自定义及安全密码管理,适合快速部署包含空间数据处理能力的数据库环境。
psql-docker脚本简化数据库交互操作pg_hba.conf和postgresql.conf配置文件创建docker-compose.yml文件:
ymlversion: "3" services: postgis: image: geographica/postgis:unbiased_uakari ports: - "5432:5432" volumes: - db-data:/data environment: - POSTGRES_PASSWD=postgres volumes: db-data:
启动服务:
bashdocker-compose up
直接运行容器:
bashdocker run --name postgis -p 5432:5432 geographica/postgis:unbiased_uakari
容器可通过以下环境变量配置:
postgresUTF-8en_USpg_hba.conf访问控制文件,详见配置数据存储postgresql.conf,详见配置数据存储本镜像编译包含以下软件版本:
镜像提供psql-docker脚本,用于在独立容器中打开psql控制台连接其他数据库。查看帮助:
bashpsql-docker -h
可运行任意命令,适用于数据库备份、交互式操作等场景:
bashdocker run --rm -ti -v /whatever/:/d --link the_container_running_the_database:pg \ geographica/postgis: \ pg_dump -b -E UTF8 -f /d/dump -F c -v -Z 9 -h pg -p 5432 -U postgres project
bashdocker run --rm -v /home/malkab/Desktop/:/d --link test_07:pg \ geographica/postgis: \ PGPASSWORD="new_password_here" pg_dump -b -E UTF8 -f /d/dump33 -F c \ -v -Z 9 -h pg -p 5432 -U postgres postgres
bashdocker run --rm -ti -v /home/malkab/Desktop/:/d --link test_07:pg \ geographica/postgis: \ PGPASSWORD="new_password_here" psql -h pg -p 5432 -U postgres postgres
数据库数据可通过数据卷或主机挂载目录持久化,供其他容器使用。容器会检查/data/目录是否为空:若为空则创建新数据存储,否则使用现有数据。
POSTGRES_PASSWD支持明文或PostgreSQL加密格式:
docker inspect可查看,安全性较低md5前缀+md5(password+username)哈希值)生成加密密码示例:
bashexport USER="projectuser" && \ export USERPASSWD="md5"$(printf '%s' "userpass" ${USER} | md5sum | cut -d ' ' -f 1) && \ export PGPASSWD="md5"$(printf '%s' "password_here" "postgres" | md5sum | cut -d ' ' -f 1) && \ docker run -d -P --name ageworkshoptestpg -e "POSTGRES_PASSWD=${PGPASSWD}" \ -e "CREATE_USER=${USER}" -e "CREATE_USER_PASSWD=${USERPASSWD}" \ geographica/postgis:
支持通过脚本和环境变量配置pg_hba.conf和postgresql.conf。
通过pg_hba_conf脚本操作,支持三种模式:
pg_hba_conf l:查看当前配置内容pg_hba_conf a "line 1#line 2#...#line n":添加配置行pg_hba_conf d "line 1#line 2#...#line n":删除配置行示例(通过exec执行):
bashdocker exec -ti whatevercontainer pg_hba_conf a \ "host all all 23.123.22.1/32 trust#host all all 93.32.12.3/32 md5"
环境变量PG_HBA默认值:
txtlocal all all trust#host all all 127.0.0.1/32 trust#host all all 0.0.0.0/0 md5#host all all ::1/128 trust
通过postgresql_conf脚本操作,语法与pg_hba_conf相同。环境变量PG_CONF默认值:
txtmax_connections=100#listen_addresses='*'#shared_buffers=128MB#dynamic_shared_memory_type=posix#log_timezone='UTC'#datestyle='iso, mdy'#timezone='UTC'#lc_messages='en_US.UTF-8'#lc_monetary='en_US.UTF-8'#lc_numeric='en_US.UTF-8'#lc_time='en_US.UTF-8'#log_statement='all'#log_directory='pg_log'#log_filename='postgresql-%Y-%m-%d_%H%M%S.log'#logging_collector=on#client_min_messages=notice#log_min_messages=notice#log_line_prefix='%a %u %d %r %h %m %i %e'#log_destination='stderr,csvlog'#log_rotation_size=500MB
日志存储路径:$POSTGRES_DATA_FOLDER/pg_log
容器支持通过信号优雅关闭数据库:
bashdocker kill -s SIGTERM containername
bashdocker kill -s SIGINT containername
bashdocker kill -s SIGQUIT containername


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务