华为云优惠活动, 三年4核16G服务器仅需不到2000块钱 截止到五月底
你可以跟着我的笔记 当我有一台服务器时,我做了什么 来开始维护服务器并搭建应用,将引导你使用 docker 和 k8s 搭建一个自己的服务器开发集群。

# 部署 postgres

postgres 是一个功能强大的开源对象关系型数据库系统,被业界誉为“最先进的开源数据库“。

postgres 不仅功能强大,而且免费开源,你可以在 github 上学习并研究它的源码: postgres/postgres。另外,它在数据类型,内置函数,事务的支持相比 mysql 都要好一些。

但我在个人服务器里选择 postgres 的终极原因是: 我们生产环境中大部分数据库都采用了 postgres

关于 mysqlpostgres 的优劣,可以参考知乎上的一个问题: PostgreSQL 与 MySQL 相比,优势何在?

# 部署

在部署之前,你需要对 docker-compose 以及 traefik 有所了解,可以参考我以前的文章:

这里采用官方镜像 postgres:12-alpine 进行数据库的部署,之所以采用 alpine 作为基础镜像,源于它体积较小。

我们使用 docker-compose 进行数据库的部署, 如果你对它不了解,可以参考我以前写的系列文章 个人服务器运维指南

对于数据库的存储,我放置于当前目录 ./pg-data 之下,方便迁移。关于 docker-compose.yaml 配置文件如下:

关于我个人服务器下所有服务的配置文件,均维护在我的 github 仓库 shfshanyue/op-note:compose

version: '3'

services:
  db:
    image: postgres:12-alpine
    restart: always
    ports:
      - 5432:5432
    volumes:
      - ./pg-data:/var/lib/postgresql/data
    labels:
      - "traefik.http.routers.db.rule=Host(`db.shanyue.local`)"

# 使用已存在的 traefik 的 network
networks:
  default:
    external:
      name: traefik_default

docker-compose up 启动服务,数据库部署完成

$ docker-compose up -d

# 连接数据库

使用 docker-compose exec 测试是否能够正常连接数据库,通过测试,我们已经正确部署并且连接上了数据库

$ docker-compose exec db psql -U postgres
psql (12.1)
Type "help" for help.

postgres=#

在宿主机中可以通过 docker-composepsql 来连接数据库,那如何在整个局域网集群中连接数据库呢?

# 使用 pgcli 连接数据库

如果把 psql 比作记事本,那么 pgcli 则是带有代码高亮功能的 IDE。在日常开发中,使用 pgcli 足以应付生产环境多个数据库的配置管理。

使用 brew 安装 pgcli:

$ brew install pgcli

使用 pgcli 得以成功连接数据库:

$ pgcli -h db.shanyue.local -U postgres
postgres@db:postgres> \d
+----------+--------+--------+---------+
| Schema   | Name   | Type   | Owner   |
|----------+--------+--------+---------|
+----------+--------+--------+---------+
SELECT 0
Time: 0.030s

扫码关注公众号全栈成长之路,并发送

即可在关注期间无限制浏览本站全部文章内容

点击关闭

你也可以在文章关于回复公众号扫码解锁全站的技术实现中获得解锁代码,永久解锁本站全部文章

Last Updated: 5/9/2020, 7:32:20 AM