Docker 部署 PostgreSQL 数据库
PostgreSQL(简称 "Postgres")是一个开源的关系型数据库管理系统,支持大多数 SQL 标准。它是由社区驱动的,具有广泛的支持和丰富的功能。
Postgres 与其他关系型数据库管理系统(如 MySQL 和 Oracle)类似,它允许用户创建、查询、更新和删除数据库中的数据。它还支持事务,允许用户回滚或提交对数据库的修改。
Postgres 特别适用于高度可扩展的应用程序,因为它支持主从复制和可扩展数据类型。它也支持大量的数据类型,包括常见的数值、字符串和日期类型,以及更复杂的类型,如 JSON 和 XML。
Postgres 可以在多种操作系统上运行,包括 Linux、Windows 和 macOS。它可以通过多种编程语言(如 Python、Java 和 C)连接,并且可以使用多种数据库管理工具(如 pgAdmin)来管理数据库。
DockerHub: postgres | DockerHub
Docker-Compose
- stack.yml
- nginx.conf
version: "3.1"
services:
postgres:
image: postgres:12.13
container_name: "some-postgres"
restart: always
environment:
- POSTGRES_DB=example
- POSTGRES_USER=example
- POSTGRES_PASSWORD=example
- PGDATA=/var/lib/postgresql/data/pgdata
volumes:
- ./postgres-data:/var/lib/postgresql/data
ports:
- "5432:5432"
networks:
- postgres
pgadmin:
container_name: pgadmin_container
image: dpage/pgadmin4:6
environment:
- PGADMIN_DEFAULT_EMAIL=pgadmin4@pgadmin.org
- PGADMIN_DEFAULT_PASSWORD=admin
- PGADMIN_ENABLE_TLS=True
- PGADMIN_CONFIG_SERVER_MODE=False
- PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION=True
- PGADMIN_CONFIG_LOGIN_BANNER="Authorised users only!"
- PGADMIN_CONFIG_CONSOLE_LOG_LEVEL=10
volumes:
- ./pgadmin:/var/lib/pgadmin
- ./certificate.cert:/certs/server.certificate
- ./certificate.key:/certs/server.key
- ./servers.json:/pgadmin4/servers.json
ports:
- "${PGADMIN_PORT:-5050}:80"
networks:
- postgres
restart: unless-stopped
networks:
postgres:
driver: bridge
volumes:
postgres:
pgadmin:
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name _;
ssl_certificate /etc/nginx/server.cert;
ssl_certificate_key /etc/nginx/server.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location /pgadmin4/ {
proxy_set_header X-Script-Name /pgadmin4;
proxy_set_header X-Scheme $scheme;
proxy_set_header Host $host;
proxy_pass http://localhost:5050/;
proxy_redirect off;
}
}
运行 docker-compose -f stack.yml up 启动服务,访问 http://localhost:8080 或者 http://host-ip:8080 进入管理页面。
常用命令:
- 启动:
docker-compose -f stack.yml up - 后台启动:
docker-compose -f stack.yml up -d - 检查状态:
docker-compose ps - 停止:
docker-compose -f stack.yml stop - 停止并删除:
docker-compose -f stack.yml down - 查看日志:
docker logs some-postgres
Docker
$ docker run -itd --name some-postgres --env POSTGRES_USER=example-user --env POSTGRES_PASSWORD=my_cool_secret --env PGDATA=/data/postgres -p 5432:5432 -v /my/own/datadir:/data/postgres postgres:latest
some-postgres容器名称-p是指定宿主端口:容器内服务端口,默认5432-v设置数据库文件的映射,把宿主机上的目录/my/own/datadir与容器内的/data/postgres作关联关系