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应用