本文基于上一篇文章:链接
需求
将本地springboot项目部署到服务器上,使用docker,项目中是需要使用mysql的,干脆mysql也搞成docker的,事先说明,这是基于两个docker容器的,不是什么docker-compose,技术含量不高,记录一下;
环境
- Linux: docker, mvn, jdk
- 上一篇文章所讲的单独的一个springboot项目的docker运行(不涉及数据库)的基础
新增的需要做的
-
服务器不需要安装Mysql,通过
docker pull mysql57
来拉取镜像; -
基于镜像运行一个mysql容器:
docker run -p 3306:3306 --name 容器名 -e MYSQL_ROOT_PASSWORD=你的密码 -d -it mysql:5.7
(参数含义参考链接) -
运行好之后可以通过本地navicat尝试连接3306端口,云服务器记得在安全组放行,可以把本地的sql文件导入进去方便测试;
-
springboot项目中的application.yml文件的datasource:url:注意要改成服务器ip地址,不要使用localhost,因为这是项目和数据库分在了两个docker,如果link式的运行我不知道需不需要改,以后再研究,
-
-
然后和上一篇文章一样运行项目的容器即可,后面不带啥–link,这个怎么用后面再研究
docker run -p 8080:8080 -t 项目镜像名
添加:
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
mysql容器会自动创建一个数据卷在主机,与容器内/data映射,可以通过docker inspect 容器ID查看到,也就是自动就有保护机制,当把当前容器停止并删除,主机上的这个文件夹不会丢失,里面有全部的数据库数据,但是如果再重新以mysql:5.7镜像启动一个container,会重新创建一个文件夹。
删除mysql:5.7镜像也不会删除主机的文件夹,Docker没有垃圾回收机制可以回收无用的数据卷。但是可以在删除容器时,连同数据卷一并删除,比如:docker rm -v mysql-test