# Docker部署SpringBoot

Docker部署SpringBoot

Docker环境安装

  • CentOs安装Docker(见前面博客)
  • 安装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
  • 安装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

编写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"]

在这里插入图片描述

  • 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
#一定要重启docker 我说怎么设置后好像没有设置一样,真的坑爹啊
systemctl restart docker

Docker 启动服务

  • success后启动容器
    -d 参数是让容器后台运行
    -p 宿主机port:容器port,此时将宿主机中的8080端口映射到容器中的8000(项目中端口配置的是8000)端口
docker run -d -p 8080:8000
//访问的时候用暴露的端口8080访问如下

在这里插入图片描述

  • 查看docker镜像
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值