使用docker&docker-compose创建常见的数据库(MySQL/Postgres/MongoDB)

本文介绍了常见的数据库MySQL、Postgre、MongoDB使用docker安装方式快速安装。

MySQL

docker run命令

配置了utf8的格式与utf8-bin的编码:

1
docker run -itd --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 -v /my/own/datadir:/var/lib/mysql lw96/mysql5.7

参数说明:

  • some-mysql容器名称
  • MYSQL_ROOT_PASSWORD设置的root用户的密码
  • -p是指定宿主端口:容器内服务端口,默认3306
  • lw96.mysql5.7这个是我自己封装的MySQL镜像,设置好了utf8的编码
  • -v设置数据库文件的映射,把宿主机上的目录/my/own/datadir与容器内的/var/lib/mysql作关联关系

使用docker-compose

如果是docker-compose.yml脚本:

1
2
3
4
5
6
7
8
9
10
11
12
version: '3'
services:
mysql:
image: lw96/mysql5.7
container_name: 'some-mysql'
restart: always
environment:
- MYSQL_ROOT_PASSWORD=my-secret-pw
volumes:
- /my/own/datadir:/var/lib/mysql
ports:
- "3306:3306"

Progres

docker run命令

1
docker run -itd --name postgres_container --restart=unless-stopped -p 5432:5432 -v $pwd/postgres:/data/postgres -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=changeme -e PGDATA=/data/postgres postgres

参数说明:

  • postgres_container容器名称
  • -p是指定宿主端口:容器内服务端口,默认5432
  • POSTGRES_USER数据库用户,POSTGRES_PASSWORD数据库密码,PGDATA数据库在容器内的数据路径
  • -v设置数据库文件的映射,把宿主机上的目录$pwd/postgres与容器内的/data/postgres作关联关系

使用docker-compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
version: '3.5'

services:
postgres:
container_name: postgres_container
image: postgres
environment:
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme}
PGDATA: /data/postgres
volumes:
- postgres:/data/postgres
ports:
- "5432:5432"
networks:
- postgres
restart: unless-stopped

pgadmin:
container_name: pgadmin_container
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
PGADMIN_CONFIG_SERVER_MODE: 'False'
volumes:
- pgadmin:/root/.pgadmin

ports:
- "${PGADMIN_PORT:-5050}:80"
networks:
- postgres
restart: unless-stopped

networks:
postgres:
driver: bridge

volumes:
postgres:
pgadmin:

上面的配置,会默认启动一个web的管理界面pgadmin,用于管理postgres数据。

  • 访问postgres,使用navicat填入如下的信息:
    localhost:5432
    用户名: postgres (默认)
    密码:changeme(默认)
  • 或者使用web浏览器进入PgAdmin
    网址:http://localhost:5050
    用户名: pgadmin4@pgadmin.org (默认)
    密码:admin(默认)

MongoDB

docker run命令

1
docker run -itd --name mongodb -p 27017:27017 -v /data/db:/data/db --restart=always -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=changeme mongo

参数说明:

  • mongodb容器名称

  • -p是指定宿主端口:容器内服务端口,默认27017

  • -v设置数据库文件的映射

  • MONGO_INITDB_ROOT_USERNAME数据库初始的管理员用户名,MONGO_INITDB_ROOT_PASSWORD初始的管理员密码

使用docker-compose

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'
services:
mongo:
image: mongo
container_name: 'mongodb'
restart: always
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=changeme
volumes:
- /home/mongo/data/db:/data/db
- /etc/localtime:/etc/localtime
ports:
- "27017:27017"