156 lines
4.0 KiB
Markdown
156 lines
4.0 KiB
Markdown
# Docker安装PostgresSQL指南
|
||
## 前言
|
||
|
||
本文将介绍如何在Docker中安装PostgreSQL数据库。
|
||
|
||
## Docker安装步骤
|
||
|
||
### 1. 拉取PostgreSQL镜像
|
||
|
||
> 注意下方命令拉取的是最新版本的PostgreSQL镜像,如果你需要指定版本,请使用
|
||
>
|
||
> ```sh
|
||
> docker pull postgres:指定版本号
|
||
> ```
|
||
>
|
||
> 命令
|
||
|
||
```
|
||
docker pull postgres
|
||
```
|
||
> 执行结果
|
||
>
|
||
> 
|
||
>
|
||
### 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`:后台运行容器
|
||
|
||
**注:如果不想当你删除容器时数据丢失,请将容器内的数据目录挂载到主机目录中**
|
||
|
||
> 执行结果
|
||
>
|
||
> 
|
||
>
|
||
> 验证容器是否启动,请执行`docker ps`命令
|
||
>
|
||
> 
|
||
>
|
||
|
||
### 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保存文件
|
||
>
|
||
> 
|
||
>
|
||
|
||
### 2. 启动服务
|
||
|
||
> 一般建议在你所使用的工作平台创建并编辑好Docker-Compose文件再上传到你的Linux服务器中(你执行命令的目录下必须有这个文件)
|
||
|
||
```sh
|
||
# 执行下方命令
|
||
docker-compose up -d
|
||
```
|
||
|
||
> 注意:
|
||
>
|
||
> 也许你执行上方命令会提示
|
||
>
|
||
> 
|
||
>
|
||
> 这是因为你的Docker Compose版本已经不支持这种方式了,请使用下方命令
|
||
>
|
||
> ```sh
|
||
> docker compose up -d
|
||
> ```
|
||
>
|
||
> 
|
||
>
|
||
> 怎么样?是不是更方便
|
||
|
||
## 总结
|
||
|
||
本文介绍了如何在Docker中安装PostgreSQL数据库.
|