# Docker部署SpringBoot

Docker部署SpringBoot


环境安装

  1. CentOs安装Docker(见前面博客)
  2. 安装Java环境
  • 上传jdk
  • 解压jdk
#tar -zxvf jdk-8u101-linux-x64.tar.gz
  • 配置环境变量
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
  1. 安装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
  • 使/etc/profile生效
source/etc/profile
  • 检验安装正确
mvn -version
java -version

java -jar方式启动SpringBoot项目

  • 暂停项目,运行maven clean ——> 运行maven package,将最后生成的jar包上传到Centos中
    C:\Users\MarLonBrando\AppData\Roaming\Typora\typora-user-images
  • 运行项目Java -jar demo显示如下
    在这里插入图片描述
    访问http://192.168.111.100:8000/不通查看防火墙,开启8000端口
firewall-cmd --state 查看防火墙状态 running为正常运行

开启8000端口,重启服务,继续访问成功如下

# firewall-cmd --zone=public --add-port=8000/tcp --permanent
# systemctl restart firewalld.service

在这里插入图片描述

Docker方式启动(一)

  • 启动docker
systemctl start docker
  1. 编写docker文件
# 基础镜像
FROM openjdk:8
# 作者信息
MAINTAINER "lidong"
# 添加一个存储空间
VOLUME /tmp
# 暴露8000端口
EXPOSE 8000
# 添加变量,如果使用dockerfile-maven-plugin,则会自动替换这里的变量内容
ARG JAR_FILE=jar包名字
# 往容器中添加jar包
ADD ${JAR_FILE} app.jar
# 启动镜像自动运行程序
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]

在这里插入图片描述
2. 制作镜像

  • 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 应用启动命令 参数设定
    t/funtaster/article/details/83274727
  1. 出现如下的问题(连接不上docker镜像库)
    在这里插入图片描述
  • 解决办法:
//运行命令,修改文件:
vim /etc/docker/daemon.json文件中加入:
{
    "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
//然后重启守护进程
systemctl daemon-reload
//一定要重启docker 我说怎么设置后好像没有设置一样,真的坑爹啊
systemctl restart docker
  • success后启动容器
    -d 参数是让容器后台运行
    -p 宿主机port:容器port,此时将宿主机中的8080端口映射到容器中的8000(项目中端口配置的是8000)端口
docker run -d -p 8080:8000
//访问的时候用暴露的端口8080访问如下

在这里插入图片描述

  • 查看docker镜像
    在这里插入图片描述
发布了123 篇原创文章 · 获赞 9 · 访问量 3994

猜你喜欢

转载自blog.csdn.net/qq_37248504/article/details/103501476