tutorial/Writerside/topics/Docker_PostgreSQL.md
2025-04-20 23:11:40 +08:00

156 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Docker安装PostgresSQL指南
## 前言
本文将介绍如何在Docker中安装PostgreSQL数据库。
## Docker安装步骤
### 1. 拉取PostgreSQL镜像
> 注意下方命令拉取的是最新版本的PostgreSQL镜像如果你需要指定版本请使用
>
> ```sh
> docker pull postgres:指定版本号
> ```
>
> 命令
```
docker pull postgres
```
> 执行结果
>
> ![image-20250420104553777](assets/Docker_PostgreSQL/image-20250420104553777.png)
>
### 2. 启动PostgreSQL容器
```sh
docker run --name my-postgres \
-e POSTGRES_PASSWORD=mysecretpassword \
-p 5432:5432 \
-v /var/service/postgresql/my-postgres/data:/var/lib/postgresql/data \
--restart unless-stopped \
-d postgres
```
参数说明:
- `--name`:为容器指定名称
- `-e POSTGRES_PASSWORD`设置postgres用户的密码(必须)
- `-v`参数将容器内的数据目录映射到主机目录。
- 对于-v /var/service/postgresql/my-postgres/data:/var/lib/postgresql/data前者路径是主机路径后者为容器中路径
- `--restart unless-stopped` 表示:
>1. 当Docker守护进程启动时自动启动这个容器
>2. 如果容器正常退出(手动停止),则不会自动重启
>3. 如果容器异常退出(崩溃),会自动重启
>4. 当然你可以使用其它策略,或者不选择策略
>
>### 其他可选的restart策略
>
>- `--restart no`:不自动重启(默认值)
>- `--restart on-failure[:max-retries]`:只在非正常退出时重启,可指定最大重试次数
>- `--restart always`:总是重启,无论退出状态如何(包括手动停止后)
- `-p 5432:5432`:将容器端口映射到主机端口
- `-d`:后台运行容器
**注:如果不想当你删除容器时数据丢失,请将容器内的数据目录挂载到主机目录中**
> 执行结果
>
> ![image-20250420111459451](assets/Docker_PostgreSQL/image-20250420111459451.png)
>
> 验证容器是否启动,请执行`docker ps`命令
>
> ![image-20250420111643192](assets/Docker_PostgreSQL/image-20250420111643192.png)
>
### 3. 连接到PostgreSQL容器
```
docker exec -it postgres psql -U postgres
```
- `-it`:交互式运行
- `-U postgres`指定用户名为postgres
### 4. 创建数据库
```
CREATE DATABASE mydatabase;
```
### 5. 退出PostgreSQL容器
```
\q
```
## Docker Compose安装步骤
> 这个可以允许你不预先安装镜像,文件执行时会自动帮你下载,因此更建议使用此种方式
### 1. 创建`docker-compose.yml`文件
```yaml
services:
postgres:
image: postgres:latest
container_name: my-postgres
environment:
POSTGRES_PASSWORD: mysecretpassword # 必填,数据库访问密码
POSTGRES_USER: myuser # 可选,自定义用户名
POSTGRES_DB: mydb # 可选,自定义初始数据库
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data # 声明挂载的数据卷所映射的目录
volumes:
postgres_data: # 声明所使用的数据卷
```
> 示例步骤
>
> 首先我们找到一个合适的目录,比如/var/service/postgresql/my-postgres
> 直接 ```cd /var/service/postgresql/my-postgres```
> 然后执行 ```nano docker-compose.yml```
> 将上面的内容复制进去然后按Ctrl+X再按Y再按Enter保存文件
>
> ![image-20250420112228948](assets/Docker_PostgreSQL/image-20250420112228948.png)
>
### 2. 启动服务
> 一般建议在你所使用的工作平台创建并编辑好Docker-Compose文件再上传到你的Linux服务器中(你执行命令的目录下必须有这个文件)
```sh
# 执行下方命令
docker-compose up -d
```
> 注意:
>
> 也许你执行上方命令会提示
>
> ![image-20250420112323250](assets/Docker_PostgreSQL/image-20250420112323250.png)
>
> 这是因为你的Docker Compose版本已经不支持这种方式了请使用下方命令
>
> ```sh
> docker compose up -d
> ```
>
> ![image-20250420112546002](assets/Docker_PostgreSQL/image-20250420112546002.png)
>
> 怎么样?是不是更方便
## 总结
本文介绍了如何在Docker中安装PostgreSQL数据库.