感谢技术的发展让我们比以前使用某些工具的时候,更方便了。 所以,现在都8102年了,Docker某种意义上已经成为了一种标准,无论你是前端、后端或者还是什么其他物种,学习一下Docker是一件值得投入的事。

最近在学习 eggjs,里面教程部分有涉及到使用数据库的方面,感谢 Docker,让数据库的安装变得如丝般顺便。

在Mac下,Docker使用起来非常顺手方便,而且 docker-compose 让使用Docker变得非常简单容易快捷方便。docker-compose相比用dockfile来说,有不少优势,尤其是管理多个容器服务的时候,比如egg这样的 Web 服务,可能需要用上的就有NodeJS + Nginx + Redis + PosgreSQL,所以此时用docker run管理4个服务?所以最后的选择是用docker-compose,而且无论有多少个服务,直接一个docker-compose.yml 就能描述清楚你的容器服务是怎样的。

因为这次是为了学习eggjs数据库部分,需要安装一个Postgres数据库来跑demo。我们可以通过配置文件看看我们需要一个怎样的数据库:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// config.default.js

 config.sequelize = {
	dialect: 'postgres', // support: mysql, mariadb, postgres, mssql
	database: 'example-dev',
	host: 'localhost',
	port: '5432',
	username: 'admin',
	password: '12345',
  };

可以得知,我们需要创建一个postgres数据库,建立一个叫 example-dev 的DB,链接主机是本机localhost,端口为5432,用户名admin,密码12345

下面是这次的docker-compose.yml配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
version: '3.1'

services:

  db:
	image: postgres
	restart: always
	environment:
	  POSTGRES_DB: example-dev
	  POSTGRES_PASSWORD: 12345
	  POSTGRES_USER: admin
	ports:
	  - 5432:5432

  adminer:
	image: adminer
	restart: always
	ports:
	- 8080:8080

配置中,通过environment参数,配置了DB、User、Password这几项。并且将容器的5432端口映射到了本机的5432端口。另外配置中还加了一个简易的web ui能较方便地查看管理数据库。

至此,一个简单的postgres服务配置就写好了,在项目的命令行目录下执行docker-compose -f docker-compose.yml up 就能启动数据库了。

-EOF-