docker安装
yum install docker
编写docker-compose.yml文件
在根目录创建docker-compose.yml文件
vi docker-compose.yml
文件内容如下:
version: '2'
services:
mysql:
network_mode: "bridge"
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_USER: 'root'
MYSQL_PASS: 'root'
image: "mysql"
restart: always
volumes:
- "./db:/var/lib/mysql"
- "./conf/my.cnf:/etc/my.cnf"
- "./init/:/docker-entrypoint-initdb.d/"
ports:
- "3306:3306"
其中
network_mode
:为容器的网络模式。
MYSQL_ROOT_PASSWORD
:为数据库的密码,也就是root用户的密。
MYSQL_USER和MYSQL_PASS
:代表用户名和密码。
image
:为你拉取镜像的地址和版本,当然也可以换成自己的镜像仓库,这里建议使用官方的,目前未指定具体版本,默认为最近版本,也可以指定版本。
volumes
:里面的参数为映射本地和docker容器里面的文件夹和目录。
ports
:为映射端口。
编写mysql配置文件
创建conf文件夹:
mkdir conf
进入conf文件夹下创建my.cnf:
vi my.cnf
文件内容如下:
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
编写数据库初始化文件
创建init文件夹
mkdir init
进入init文件夹下创建初始化sql文件
vi init.sql
文件的内容如下(只为测试):
create database test;
use test;
create table user
(
id int auto_increment primary key,
username varchar(64) unique not null,
email varchar(120) unique not null,
password_hash varchar(128) not null,
avatar varchar(128) not null
);
insert into user values(1, "zhangsan","test12345@qq.com","123","avaterpath");
insert into user values(2, "lisi","test56789@qq.com","456","avaterpath");
创建db目录放置读取的文件
mkdir db
运行
docker-compose up -d --build
测试
使用navicat测试连接
注意
宿主机上init
文件夹下的init.sql
文件内容变更以后,可停止容器:
docker-compose stop
删除db
文件夹下的内容,然后变更init.sql
中,重新启动即可。