docker部署springboot

docker环境部署spring boot项目(自制jdk镜像1.8)

(环境准备:VMware 14,Centos7,Xshell5,)

docker部署 spring boot项目大致结构, 在虚拟机上面使用docker创建一个沙箱里面相当于一个小系统,然后把java项目发布在这个沙箱里面,将沙箱端口映射到服务器对应端口,外部通过访问服务器该端口来访问沙箱里面的项目

docker官网

本文使用自定义jdk1.8镜像,也可以使用docker官网提供的镜像 使用docker search jdk 或者官网即可查到提供的jdk.

1.docker环境安装

1.1docer安装(执行)
yum update
# 安装Docker( 参数-y  默认安装时 自动选择Y)
yum -y install docker  
#启动docker
service docker start
#要求服务器重启自动启动docker  可输入该命令systemctl enable docker 实现

输入docker version 查看docker信息

在这里插入图片描述

1.2配置docker的国内仓库
#Docker配置国内仓库(这里使用网易云),添加如下配置
vi /etc/docker/daemon.json
{
  "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

#重启Docker service服务
systemctl restart docker.service

输入docker info 查看国内仓库是否添加成功

在这里插入图片描述

2.docker安装指定版本的jdk1.8镜像

2.1配置准备(写入Dockerfile(类似于脚本文件)和上传指定的jdk1.8)
#创建一个文件夹放**Dockerfile和指定jdk
mkdir -p /usr/docker/java1.8
#切换到该路径
cd /usr/docker/java1.8
#创建一个Dockerfile文件
vi Dockerfile

在Dockerfile里面添加如下内容

#依赖的环境
FROM centos:7
#作者
MAINTAINER "violet"
#切换工作目录,然后会在该目录下执行命令
WORKDIR /usr
RUN mkdir -p /usr/docker/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u251-linux-x64.tar.gz  /usr/docker/java
#环境配置  注意: 这里的jdk1.8.0_251的路径与 jdk-8u251版本要进行对应的修改
ENV JAVA_HOME /usr/docker/java/jdk1.8.0_251
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

上传指定的jdk1.8到服务器,项目结构如下图
在这里插入图片描述

2.2打包jdk镜像(在上图的路径执行如下命令)
#打包镜像 注意有后缀 .  这个点的意思使用当前目录下面的Dockerfile制作镜像
docker build -t jdk1.8 .

在这里插入图片描述

#查看镜像
docker images

在这里插入图片描述

2.3测试基于镜像创建容器jdk1.8,环境是否正常
#运行该容器
docker run -it --name=jdk1.8 jdk1.8 /bin/bash
#然后输入java -version  你会发现前面的localhost换成了一段密文,这是当前docker容器的id。 出现java版本说明容器没有问题

#退出容器(在容器输入exit)
 exit

在这里插入图片描述

3. 部署spring boot项目

3.上传项目和准备Dockerfile
#创建文件夹
mkdir -p /usr/docker/sys
#编写该项目的Dockerfile
vi Dockerfile
#基于刚刚创建的jdk版本,这里使用的自己创建jdk1.8镜像
FROM jdk1.8
#作者
MAINTAINER “violet”
#该dockerfile的描述
LABEL description=“描述”
#服务器时间,根据条件条件
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo “Asia/Shanghai” > /etc/timezone
#sys-0.0.1-SNAPSHOT.jar 改名为 app.jar
COPY sys-0.0.1-SNAPSHOT.jar app.jar
#镜像端口
EXPOSE 12000
#cmd命令
CMD java -jar -XX:+PrintGC -XX:+PrintGCDateStamps app.jar
#ENTRYPOINT ["java","-jar","-XX:+PrintGC","-XX:+PrintGCDateStamps","app.jar"] CMD可替换为

配置结构展示:

在这里插入图片描述

#创建spring boot  镜像 注意有点 制作的镜像名字为 sys-java    Dockerfile和jar在同一个目录下,并且使用该命令
docker build -t sys-java . 

在这里插入图片描述


# --name sys-java 容器名字
#-d 后台运行
# -v /docker/java/logs:/usr/logs 解析为将容器路径/usr/logs映射到/docker/java/logs 映射后应该在容器的/docker/java/logs看到服务器日志
#  -p 12000:12000   镜像端口12000映射到为12000(springboot启动的端口为12000)
#sys-java 是运行的镜像名字
docker run --name sys-java -d -v /docker/java/logs:/usr/logs -p 12000:12000 sys-java 
#可以在-d后面可添加--restart=always或者docker container update --restart=always 容器名字  docker启动时自启动改jar包

运行成功

在这里插入图片描述

#查询sys-java的日志
docker logs -f sys-java

在这里插入图片描述

#查看本机映射日志
cd /docker/java/logs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zeax2vl3-1599116978941)(C:\Users\VIolet\AppData\Roaming\Typora\typora-user-images\image-20200903145106056.png)]

到这里就部署完了,接下来添加一个shell脚本一键安装部署(如果出现 “Permission denied” 在启动docker run 添加 --privileged=true (该问题是权限不足) )

4.shell脚本安装

创建一个sys-java.sh(可在windows可在服务器)

大致意思是: 查看服务器是否有服务名的端口运行 如果有关闭docker容器运行并且删除容器和镜像 重新书写dockerfile 打包发布

#!/bin/bash
SERVER_NAME=sys-java
#容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
if [ -n "$CID" ]; then 
docker stop $SERVER_NAME
fi
images=$(docker images  "$SERVER_NAME" | awk '{print $1}')
if [ -n "$images" ]; then 
docker rm $SERVER_NAME
docker rmi $SERVER_NAME
fi
# echo "$images"
cat > Dockerfile << EOF
FROM jdk1.8    
MAINTAINER "violet"
LABEL description="描述"
VOLUME /tmp 
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
COPY sys-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 12000
CMD java -jar -XX:+PrintGC -XX:+PrintGCDateStamps  app.jar
EOF
docker build -t $SERVER_NAME .
docker run --name $SERVER_NAME -d -v /docker/java/logs:/usr/logs -p 12000:12000 $SERVER_NAME 
echo "$SERVER_NAME容器创建完成"

**项目结构 : **
在这里插入图片描述

运行./sys-java.sh出现提示权限不足时,执行 chmod +x sys-java.sh 然后运行重新运行
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值