Docker部署SpringBoot
Docker环境安装
CentOs
安装Docker
(见前面博客)- 安装
Java
环境 - 上传
jdk
- 解压
jdk
export JAVA_HOME=/version/java/jdk1.8.0_231
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
- 安装
MAVEN
- 下载
MAVEN
,如果wget
没安装,先yum install wget
wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.2/binaries/apache-maven-3.6.2-bin.tar.gz
vi /etc/profile
export MAVEN_HOME=/version/maven/apache-maven-3.6.2
export PATH=${MAVEN_HOME}/bin:$PATH
source/etc/profile
mvn -version
java -version
java -jar方式启动SpringBoot项目
- 暂停项目,运行
maven clean
——> 运行maven package
,将最后生成的jar
包上传到Centos
中
- 运行项目
Java -jar demo
显示如下 - 访问
http://192.168.111.100:8000/
不通查看防火墙,开启8000
端口
firewall-cmd --state 查看防火墙状态 running为正常运行
Docker方式启动
启动docker
systemctl start docker
编写docker文件制作镜像
FROM openjdk:8
MAINTAINER "lidong"
VOLUME /tmp
EXPOSE 8000
ARG JAR_FILE=jar包名字
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]
java:8
是指Docker Hub
上官方提供的java
镜像,版本号是8
也就是jdk1.8
,有了这个基础镜像后,Dockerfile
可以通过FROM
指令直接获取它的状态——也就是在容器中java
是已经安装的,接下来通过自定义的命令来运行Spring Boot
应用:
VOLUME
指向了一个/tmp
的目录,由于Spring Boot
使用内置的Tomcat
容器,Tomcat
默认使用/tmp
作为工作目录。效果就是在主机的/var/lib/docker
目录下创建了一个临时文件,并连接到容器的/tmp
。- 将项目的
jar
文件作为app.jar
添加到容器 RUN
表示在新创建的镜像中执行一些命令,然后把执行的结果提交到当前镜像。这里使用touch
命令来改变文件的修改时间,Docker
创建的所有容器文件默认状态都是“未修改”。这对于简单应用来说不需要,不过对于一些静态内容(比如:index.html
)的文件就需要一个“修改时间”。EXPOSE
容器暴露端口ENTRYPOINT
应用启动命令 参数设定- 出现如下的问题(连接不上
docker
镜像库)
- 解决办法:
vim /etc/docker/daemon.json文件中加入:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
systemctl daemon-reload
systemctl restart docker
Docker 启动服务
success
后启动容器
-d
参数是让容器后台运行
-p
宿主机port:
容器port
,此时将宿主机中的8080
端口映射到容器中的8000
(项目中端口配置的是8000
)端口
docker run -d -p 8080:8000
//访问的时候用暴露的端口8080访问如下
- 查看
docker
镜像