部署数据库
docker pull mysql
mysql5.7支持nosql,8.0支持分布式。
docker pull mysql:5.7.22
拉取5.7版本
docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/conf:/etc/mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.22
命令参数:
- -p 3306:3306:将容器的3306端口映射到主机的3306端口
-
-v /usr/local/docker/mysql/conf:/etc/mysql
:将主机当前目录下的 conf 挂载到容器的 /etc/mysql -
-v /usr/local/docker/mysql/logs:/var/log/mysql
:将主机当前目录下的 logs 目录挂载到容器的 /var/log/mysql -
-v /usr/local/docker/mysql/data:/var/lib/mysql
:将主机当前目录下的 data 目录挂载到容器的 /var/lib/mysql -
-e MYSQL\_ROOT\_PASSWORD=123456
:初始化root用户的密码
Navicat可以连接
以交互的方式启动mysql容器
docker run -it --rm mysql:5.7.22 bash
配置文件
配置文件没有出发,导入数据库文件过大报错
max_allowed_packet = 16M
需要把etc中myshop目录下所有配置文件全部拉取下来
删除此容器
新建容器
先使用镜像里自带的配置
docker run -p 3306:3306 --name mysql \
-v /usr/local/docker/mysql/logs:/var/log/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7.22
此时不是以交互方式启动,而是以交互方式进入容器,可以沿用
etc-conf.d
下配置文件,mysqld.cnf
是配置文件
需要将etc-mysql-conf.d下的mysqldump.cnf写到etc-mysql-mysql.conf.d下的mysqld.cnf中
需要把配置做成数据卷放到宿主机上,不然容器销毁,配置也没有了。
此时配置沿用容器的,之前是以交互的方式启动容器,现在是以交互的方式进入容器
docker exec -it mysql bash
查看mysqld.cnf的内容,没有max_allowed_packet
此时追加成功此项配置
ctrl + D
退出容器
docker restart mysql
重启容器
此时导入成功
此时配置只在容器中,没有被持久化
将容器里的文件复制到宿主机
其实就是将etc/mysql文件夹直接拿过来
docker cp mysql:/etc/mysql .
将容器中的目录copy到宿主机
将配置文件移动到上层conf文件下
删除mysql文件夹
删除之前的容器
再用之前带配置文件的数据卷的命令重新启动
之前数据库用了数据卷,容器删除数据还在
停掉容器
删除data目录
重启容器
删除容器
重新启动一个容器
此时数据库中没有了myshop
此时可以导入
以上就是挂载数据卷创建容器
部署
将zip包移动到usr-local-docker-tomcat-ROOT目录下,解压
修改数据源myshop.properties
docker run -p 8080:8080 -- name myshop -v /usr/local/docker/tomcat/ROOT/:/usr/local/tomcat/webapps/ROOT -d tomcat
挂载数据卷启动tomcat,访问localhost/login
docker logs myshop
查看tomcat日志
docker logs -f myshop
监听日志文件的变化
正常开发只要会用dockercompose启动各种服务就行,但是如果想定制服务,就要掌握上面的内容。