1. 安装 Docker 和 Docker Compose
首先,确保你的服务器上已经安装了 Docker 和 Docker Compose。你可以通过以下命令检查它们是否安装:
docker --version
docker-compose --version
2. 创建项目目录
在你的服务器上创建一个用于存放 PostgreSQL Docker Compose 配置的目录,例如
my-project
:
mkdir my-project
cd my-project
3. 创建
docker-compose.yml
文件
在
my-project
目录中创建一个名为
docker-compose.yml
的文件,用于定义 PostgreSQL 服务:
nano docker-compose.yml
将以下内容粘贴到文件中:
version:'3.8'services:postgres:# 定义服务名称为 postgresimage: postgres:14# 使用 PostgreSQL14 镜像container_name: postgres # 设置容器名称为 postgresrestart: always # 配置容器总是自动重启environment:POSTGRES_DB: mydatabase # 定义要创建的数据库名称为 mydatabasePOSTGRES_USER: root # 定义 PostgreSQL 数据库的用户名为 wqgPOSTGRES_PASSWORD:123456# 定义数据库用户的密码ports:-"5432:5432"# 将容器的 5432 端口映射到主机的 5432 端口,外部可以通过此端口连接数据库volumes:- ./postgis/data:/var/lib/postgis/data # 挂载数据卷(假设你需要 PostGIS 的数据存储)- ./postgresql-data:/var/lib/postgresql/data # 持久化 PostgreSQL 数据库的数据到主机的 `./postgresql-data` 目录
进一步解释:
- 服务名称:
postgres
是你的服务名称,代表你启动的 PostgreSQL 容器。- 镜像:
postgres:latest
表示使用最新版本的 PostgreSQL 官方镜像。- 容器名称:
postgres
是容器的名称,当你查看正在运行的 Docker 容器时,你会看到这个名称。- 重启策略:
restart: always
表示如果容器崩溃或 Docker 守护进程重新启动,容器将自动重启。- 环境变量: -
POSTGRES_DB
定义了要创建的数据库名称。-POSTGRES_USER
定义了用于访问数据库的用户名。-POSTGRES_PASSWORD
定义了对应用户的密码。- 端口映射:
5432:5432
将 PostgreSQL 的默认端口5432
暴露给主机,使得主机上的应用可以通过该端口访问 PostgreSQL。- 挂载卷: -
./postgis/data:/var/lib/postgis/data
是假设你还要使用 PostGIS(一个地理空间扩展),将数据持久化到主机上的./postgis/data
目录。注意,这里的路径应该是有效且存在的,否则会导致挂载失败。-./postgresql-data:/var/lib/postgresql/data
是将 PostgreSQL 的数据存储到主机的./postgresql-data
目录下,确保数据库持久化。
4. 检查注意事项
- PostGIS 使用: 如果你并不打算使用 PostGIS,则可以去掉
postgis/data
相关的部分。 - 目录路径: 在启动容器之前,确保你挂载的本地目录(如
./postgresql-data
)在你的服务器上实际存在,或者你可以提前创建这些目录:
mkdir -p ./postgis/data
mkdir -p ./postgresql-data
5. 启动 PostgreSQL 容器
运行以下命令启动 PostgreSQL 容器:
docker-compose up -d
6. 检查容器状态
使用以下命令查看容器的运行状态,确保 PostgreSQL 容器
postgres
已成功启动:
docker ps
输出应显示
postgres
容器正在运行:
ubuntu@VM-20-7-ubuntu:~/my_project$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4f8ab61c25bd postgres:latest "docker-entrypoint.s…"16 seconds ago Up 15 seconds 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres
7. 连接到 PostgreSQL
你可以通过宿主机的
localhost
或服务器的 IP 地址,使用数据库管理工具(如 pgAdmin、DBeaver)或者命令行连接 PostgreSQL:
- 主机:
localhost
或服务器 IP - 端口:
5432
- 数据库名:
mydatabase
- 用户名:
user
- 密码:
password
你也可以使用以下命令直接进入容器内部的 PostgreSQL:
docker exec -it postgres psql -U user -d mydatabase
8. 数据持久化
volumes
配置确保数据库的数据保存在宿主机的
./postgresql-data
目录中。即使容器停止或删除,数据仍然会保留在宿主机中,确保数据安全。
以上步骤将帮助你在 Docker 中配置和运行 PostgreSQL 数据库。接下来,你可以继续配置前后端服务并将其整合到
docker-compose.yml
文件中,以便一起管理和部署。
版权归原作者 王梓麒 所有, 如有侵权,请联系我们删除。