Docker制作springboot运行应用镜像

Docker制作springboot运行应用镜像

以springboot框架编译制作的fast-testing.jar为例,给它制作一个运行的镜像。

1.定义Dockerfile

# 镜像模板
# FROM eclipse-temurin:8u372-b07-jdk-centos7
FROM eclipse-temurin:17.0.7_7-jdk-centos7

# 作者
MAINTAINER 胡桃夹子 <[email protected]>

# 环境变量设置
ENV JAR=fast-testing.jar
ENV DEPLOY_PATH=/opt
ENV ARGS="-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -DLANG=en_US.UTF-8 -Djava.security.egd=file:/dev/./urandom"
ENV OOM_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${DEPLOY_PATH}"

# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp

# 创建目录
RUN mkdir -p $DEPLOY_PATH

# 传包
COPY $JAR $DEPLOY_PATH

# 声明工作目录
WORKDIR $DEPLOY_PATH

RUN echo "java ${OOM_OPTS} \${JAVA_OPTS} ${ARGS} -jar -jar ${DEPLOY_PATH}/${JAR}" > start.sh && chmod +x start.sh
CMD ./start.sh

fast-testing.jar 与 Dockerfile 文件在同一级目录。

-XX:+HeapDumpOnOutOfMemoryError 是指OOM时,自动生成dump文件。

倒数第二行的RUN命令,创建start.sh及授权,这里是为解决容器启动运行后,java应用进程号等于1的问题,进程号等于1会导致jstack等命令无法运行。

2.定义Dockermake.sh

包含镜像构建、镜像上传至指定私服

#!/bin/bash
#pomver=`mvn help:evaluate -Dexpression=project.version | sed -n -e '/^\[.*\]/ !{ /^[0-9]/ { p; q } }'`
#pomver=`mvn -q -Dexec.executable="echo" -Dexec.args='${project.version}' --non-recursive exec:exec`
# tag版本号
version=latest
#commit=`git rev-parse --verify --short=8 HEAD`
#branch=`git branch | grep "^\*" | sed -e "s/^\*\ //"`

# nexus私服仓库
#docker build -t docker.xxx.io/fast-testing:$version --no-cache=true .
#docker login -u 你docker私服账号 -p 你docker私服账号的密码 docker.xxx.io
#docker push docker.xxx.io/fast-testing:$version

#harbor私服仓库
echo "你的harbor账号的密码" | docker login --username 你的harbor账号 --password-stdin https://harbor.xxx.com.cn
docker build -t harbor.xxx.com.cn/fast-testing:$version --no-cache=true .
docker push harbor.xxx.com.cn/fast-testing:$version

授权Dockermake.sh

chmod +x Dockermake.sh

然后运行 sh Dockermake.sh 即可制作镜像。

制作时也可以指定tag,例如:sh Dockermake.sh 1.0,即制作出来为 docker.xxx.io/fast-testing:1.0 的镜像


此时已经完成镜像的制作


3.引用Reference

CentOS8搭建nfs服务
Kubernetes 1.25.4版本安装
kubeasz安装kubernetes1.25.5
k8s一键安装redis单机版
k8s一键安装mysql8单机版
k8s部署springboot应用
Docker安装及学习
Docker制作springboot运行应用镜像
Docker制作Java8环境镜像
Docker安装Mysql5.7.31
Docker安装Mysql8.1.0
Elasticsearch单机版本安装
Elasticsearch集群安装
ELK安装
Docker安装ELK
zookeeper集群安装
Nginx日志切割
RabbitMQ集群安装
springboot集成prometheus+grafana
windows11安装android应用

猜你喜欢

转载自blog.csdn.net/wangxin_wangxin/article/details/128724395
今日推荐