本文将讲述使用Dockerfile为SpringBoot项目构建docker镜像并部署,此种方式不需要依赖自建的镜像仓库,只需要应用的jar包和一个Dockerfile文件即可。
1.编写Dockerfile文件
# 该镜像需要依赖的基础镜像
FROM java:8
# 指定维护者的名字
MAINTAINER cxhello
# 将指定目录下的jar包复制到docker容器的/export/Apps/springboot-admin目录下
COPY springboot-admin-0.0.1-SNAPSHOT.jar /export/Apps/springboot-admin/springboot-admin-0.0.1-SNAPSHOT.jar
# 声明服务运行在8080端口
EXPOSE 8080
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-jar","/export/Apps/springboot-admin/springboot-admin-0.0.1-SNAPSHOT.jar"]
2.构建docker mysql镜像
# 1.下载mysql镜像
docker pull mysql:5.5
# 2.创建mysql容器并启动
docker run -p 3306:3306 --name mysql \
-v /export/mysql/conf:/etc/mysql \
-v /export/mysql/log:/var/log/mysql \
-v /export/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.5
# 3.将sql脚本拷贝到mysql容器的根目录下
docker cp /export/Apps/springboot-admin/data.sql mysql:/;
# 4.进入运行mysql的docker容器
docker exec -it 744d466a180b /bin/bash
# 5.使用mysql命令打开客户端
mysql -uroot -p123456 --default-character-set=utf8
# 6.修改root帐号的权限,使得任何ip都能访问
grant all privileges on *.* to 'root'@'%';
# 7.创建springboot_admin数据库:
create database springboot_admin character set utf8;
# 8.将sql文件导入到数据库
use springboot_admin;
source /data.sql;
3.使用Maven打包应用
将maven打包好的jar包和Dockerfile上传到指定路径下进行构建docker镜像,构建的时候要在Dockerfile文件的路径下进行操作
4.构建docker springboot应用镜像
# 1.构建docker springboot应用镜像
docker build -t springboot-admin/springboot-admin:0.0.1-SNAPSHOT .
# 2.创建容器并启动
docker run -d -p 80:8080 \
--name springboot-admin \
--link mysql:db \
-v /export/Logs/springboot-admin:/export/Logs/springboot-admin \
springboot-admin/springboot-admin:0.0.1-SNAPSHOT
# 3.进入运行项目的docker容器
docker exec -it springboot-admin /bin/bash
# 4.查看运行项目的日志
docker logs -f springboot-admin
5.注意事项
项目使用的MySQL服务也是基于Docker的,所以在使用Maven打包之前,需要修改一下数据库的连接配置(应用镜像需要关联mysql镜像,所以数据库配置改成别名)
--link可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信。
# 其中mysql是指一个name为mysql的容器,db为为其指定的别名
docker run -d -p 80:8080 \
--name springboot-admin \
--link mysql:db \
-v /export/Logs/springboot-admin:/export/Logs/springboot-admin \
springboot-admin/springboot-admin:0.0.1-SNAPSHOT
中间在部署的时候出现了一些问题,项目打包的时候总是出错,报类似数据库连接的错误,这说明应该是你的pom.xml里面没有配置打包的时候跳过测试,在pom.xml添加 <skipTests>true</skipTests> 这一行,再次运行就可以了。
<properties>
<java.version>1.8</java.version>
<skipTests>true</skipTests>
</properties>