环境
CentOS7.7.1908
Open-JDK1.8
Maven3.6.2
软件地址
SpringBoot项目
本人是直接在 https://spring.io 构建Spring-hello项目的,当然IDEA也可直接构建,这个看个人习惯。之后需在pom.xml文件中添加docker相关插件
pom.xml 属性配置
<properties>
<java.version>1.8</java.version>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
pom.xml 插件配置
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
之后自己编写个HelloWord程序,在此就不列出了
DockerFile文件配置
#表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
FROM openjdk:8-jdk-alpine
#VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。
#这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp
#拷贝文件并且重命名
ADD web-hello-world-0.0.1-SNAPSHOT.jar app.jar
#为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
配置有相关说明,在此不过多解释
在这给出我自己DockerFile配置文件的位置
Docker 安装
安装
yum install docker
之后验证是否安装成功
docker -version
出现版本信息表示安装成功
Docker加速器配置
为了使之后使用Docker网速可以快点,这里做下配置
vim /etc/docker/key.json
#添加后:
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"live-restore": true
}
安装JDK
安装
yum -y install java-1.8.0-openjdk*
注意这里的 将会安装所以的版本(这里按需要进行安装即可)
配置环境变量 打开 vim /etc/profile 添加一下内容
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64
export PATH=$PATH:$JAVA_HOME/bin
如图:
修改完成之后,使其生效
source /etc/profile
安装MAVEN
把下载好的maven包解压
tar -zxvf apache-maven-3.6.2-bin.tar.gz
把maven添加到环境变量 /etc/profile
MAVEN_HOME=/usr/local/maven/apache-maven-3.6.2
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
如图:
执行命令使其生效
source /etc/profile
验证maven是否安装成功
mvn -version
到此环境搭建完毕
Docker运行SpringBoot
在进行用Docker运行之前,在这里先用maven运行测试下,以保证后面的步骤可以正确进行。
进入到你项目所在的pom.xml文件下进行打包
mvn package
之后再tartget目录下会有一个***.jar 的jar运行下,测试下看不否正常运行
java -jar web-hello-world-0.0.1-SNAPSHOT.jar
如果可以顺利启动,表明你前面的环境搭建是没有问题的
下面开始使用Docker来跑一下SpringBoot
第一步启动Docker
如果还没有启动Docker,先执行命令启动Docker
systemctl start docker
第二步构建docker镜像
mvn package docker:build
当看到有 build success 字样时,表明构建成功
第三步查看所有image镜像
docker image ls
第四步运行
docker run -p 8080:8080 -t springboot/web-hello-world
之后在你的浏览器上就可以访问项目了 http://192.168.119.128:8080/hello/toDocker
可能会遇到的问题
问题1:Docker运行成功后从CentOS之外的浏览器不能访问运行的项目
原因1:检查CentOS防火墙有没有关闭,如果没有关闭需要关闭
-- 查看状态
systemctl status firewalld.service
-- 关闭
systemctl stop firewalld.service
-- 开启
systemctl start firewalld.service、
原因2:Docker没有开启远程访问
vim /usr/lib/systemd/system/docker.service
在ExecStart 后添加内容
-H unix:///var/run/docker.sock -H 0.0.0.0:5555
如图