Docker 安装 PostgreSQL

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:                            # 定义服务名称为 postgres
    image: postgres:14	      	       # 使用 PostgreSQL14 镜像
    container_name: postgres           # 设置容器名称为 postgres
    restart: always                    # 配置容器总是自动重启
    environment:
      POSTGRES_DB: mydatabase          # 定义要创建的数据库名称为 mydatabase
      POSTGRES_USER: root              # 定义 PostgreSQL 数据库的用户名为 wqg
      POSTGRES_PASSWORD: 123456 			 # 定义数据库用户的密码
    ports:
      - "5432:5432"                    # 将容器的 5432 端口映射到主机的 5432 端口,外部可以通过此端口连接数据库
    volumes:
      - ./postgis/data:/var/lib/postgis/data       # 挂载数据卷(假设你需要 PostGIS 的数据存储)
      - ./postgresql-data:/var/lib/postgresql/data # 持久化 PostgreSQL 数据库的数据到主机的 `./postgresql-data` 目录

进一步解释:

  1. 服务名称: postgres 是你的服务名称,代表你启动的 PostgreSQL 容器。
  2. 镜像: postgres:latest 表示使用最新版本的 PostgreSQL 官方镜像。
  3. 容器名称: postgres 是容器的名称,当你查看正在运行的 Docker 容器时,你会看到这个名称。
  4. 重启策略: restart: always 表示如果容器崩溃或 Docker 守护进程重新启动,容器将自动重启。
  5. 环境变量:
    • POSTGRES_DB 定义了要创建的数据库名称。
    • POSTGRES_USER 定义了用于访问数据库的用户名。
    • POSTGRES_PASSWORD 定义了对应用户的密码。
  6. 端口映射: 5432:5432 将 PostgreSQL 的默认端口 5432 暴露给主机,使得主机上的应用可以通过该端口访问 PostgreSQL。
  7. 挂载卷:
    • ./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 文件中,以便一起管理和部署。

你可能感兴趣的:(Docker,docker,postgresql,容器)