# docker部署postgres数据库服务

> 本文同时实现按中文拼音排序(将默认语言环境设置为zh_CN.utf8)

基于docker和docker-compose,操作前要先安装这两个服务和工具。

## 创建存储目录

比如创建`/data/postgres/`目录。

```sh
mkdir /data/postgres -p
```

## 创建编排文件

创建文件`/data/postgres/docker-compose.yml`,内容如下(注意自己改postgres用户的密码):

以host模式启动的编排文件:

```yml
version: "3.1"
services:
  db:
    image: postgres:14
    restart: always
    environment:
      POSTGRES_PASSWORD: NASDnyeUgql6U4I9fa
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - ./data:/var/lib/postgresql/data
    network_mode:
      host
```

以映射端口方式启动的编排文件:

```yml
version: "3.1"
services:
  db:
    image: postgres:14
    restart: always
    environment:
      POSTGRES_PASSWORD: NASDnyeUgql6U4I9fa
      PGDATA: /var/lib/postgresql/data/pgdata
    volumes:
      - ./data:/var/lib/postgresql/data
    ports:
      - 5432:5432
```

## 启动容器

在`/data/pgsql`目录下执行下面的命令:

```sh
docker-compose up -d
```

## 查看当前postgres版本

### 方法一 - 进入容器使用命令

先用`docker ps`命令找到postgres容器实例,假设实例id是`52a63c60bb59`:

```sh
docker exec -it 52a63c60bb59 /bin/bash
# 进入容器后执行下面命令
psql --version
# psql (PostgreSQL) 14.1 (Debian 14.1-1.pgdg110+1)
postgres --version
# postgres (PostgreSQL) 14.1 (Debian 14.1-1.pgdg110+1)
pg_config|grep VERSION
# VERSION = PostgreSQL 14.1 (Debian 14.1-1.pgdg110+1)
```

### 方法二 - 连接数据库使用查询命令

```sql
show server_version;
```

结果如下:

```txt
server_version                |
------------------------------+
14.1 (Debian 14.1-1.pgdg110+1)|
```