使用Docker-Compose部署PostgreSQL
创建项目目录
首先为项目创建一个目录。在这里,在我们的工作目录 /home/postgresql下创建一个名为 postgresql 的项目 :
[root@node13 postgresql]# pwd /home/postgresql [root@node13 postgresql]#
该目录是应用程序镜像的上下文。该目录应该只包含用于构建该镜像的资源。
引用外部环境变量
创建 .env 环境变量配置
POSTGRES_USER=admin POSTGRES_PASSWORD=admin123 PGADMIN_DEFAULT_EMAIL=admin@qq.com PGADMIN_DEFAULT_PASSWORD=admin@123 POSTGRES_DB=postgres PGADMIN_PORT=5050 POSTGRES_PORT=5432
version: '3.5'
services: postgres: container_name: postgresql image: bitnami/postgresql:latest environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-pgadmin@123} POSTGRES_DB: ${POSTGRES_DB:-exampledb} POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --lc-collate=en_US.UTF-8 --lc-ctype=en_US.UTF-8" TZ: Asia/Shanghai LANG: en_US.UTF-8 privileged: true env_file: - ./.env ports: - "${POSTGRES_PORT}:5432" volumes: - pgdata:/bitnami/postgresql:z
- /etc/localtime:/etc/localtime:ro - tablespace:/tablespace_location:z
- ${PWD}/log:/var/log/postgresql networks: - postgres restart: always hostname: postgresql
volumes:
pgdata:
tablespace:
networks: postgres: # driver: bridge # 表示网络是在 Docker Compose 配置文件之外定义的,即它已经存在了 external: true
postgres的服务定义中,包含如下指令:
-
-
container_name:自定义的容器名称 docker_postgres,便于识别。
-
environment:设置环境变量。我们为 PostgreSQL 数据库设置了密码 root。请将其更改为更安全的密码。这是postgres默认管理员账户的密码。由于这个值是必需的,如果没有设置,容器将无法启动。
-
ports:用来将容器的端口映射到宿主机的端口,使得宿主机能够与集群进行通信。通常,只有服务需要直接从宿主机的网络访问时,我们才会映射端口。将容器的 5432 端口映射到宿主机的 5432 端口,使外部可访问 PostgreSQL。
-
volumes:实现数据持久化的关键部分。PostgreSQL 存储数据在 /var/lib/postgresql/data 路径,日志存储在 /var/log/postgresql 路径。postgres_db 服务将这两个路径映射到宿主机的数据卷的 data 和 log 的数据卷上。这意味着即使容器被删除,存储在这两个数据卷上的数据也不会丢失,实现了数据的持久化。配置日志数据卷是一个好的实践,它可以帮助你更好地管理和保存日志文件,以便于问题诊断和性能监控。
-
logging:可以通过 logging 选项对容器日志做了简单的管理配置,例如限制日志文件的最大大小为 10MB,且最多保留3个日志文件。这有助于避免日志文件占用过多的磁盘空间。
-
这个docker-compose.yml文件是 PostgreSQL 部署的基础模板,它涵盖了启动、配置和持久化 PostgreSQL 实例的基本方面,同时还考虑了服务间网络连接的需求。根据具体需求,可能需要对配置进行调整(比如,环境变量的值或者镜像版本)。
部署
docker-compose -f docker-compose.yml up -d
[root@node13 postgresql]# docker-compose ps Name Command State Ports ---------------------------------------------------------------------------- postgresql /opt/bitnami/scripts/postg ... Up 0.0.0.0:5432->5432/tcp [root@node13 postgresql]#
尝试使用PostgreSQL客户端连接访问

至此PostgreSQL数据库环境搭建完成
浙公网安备 33010602011771号