欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 基于Dockerfile以docker运行java(可快速替换jar包实现工程更新)

基于Dockerfile以docker运行java(可快速替换jar包实现工程更新)

2025/4/2 3:23:39 来源:https://blog.csdn.net/m0_67497257/article/details/146589132  浏览:    关键词:基于Dockerfile以docker运行java(可快速替换jar包实现工程更新)

一、安装部署docker

1.1 Ubuntu(使用 apt-get 进行安装)

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg# step 2: 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg# Step 3: 写入软件源信息
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# Step 4: 安装Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

1.2 CentOS (使用 yum 进行安装)

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils# Step 2: 添加软件源信息
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# Step 3: 安装Docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# Step 4: 开启Docker服务
sudo service docker start# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ce.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            docker-ce-stable
#   docker-ce.x86_64            17.03.1.ce-1.el7.centos            @docker-ce-stable
#   docker-ce.x86_64            17.03.0.ce-1.el7.centos            docker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

二、准备dockerfile文件与脚本与基础镜像

2.1 创建准备目录和映射目录

mkdir -p /doc/java.docker #准备目录
mkdir  /app #docker映射目录
cd  /doc/java.docker

2.2 准备Dockerfile文件

vim Dockerfile
# 基础镜像(推荐轻量级JRE)
FROM openjdk:17# 创建挂载目录并设置权限
RUN mkdir -p /app/jars && useradd -m appuser
WORKDIR /app
COPY entrypoint.sh ./# 声明环境变量(支持动态Jar名)
ENV JAR_NAME="app.jar" \JVM_OPTS="-Xms512m -Xmx1024m"# 配置非root用户运行
RUN chown -R appuser:appuser /app && chmod +x entrypoint.sh
USER appuser# 启动命令
ENTRYPOINT ["/app/entrypoint.sh"]

2.3 准备启动脚本

vim entrypoint.sh
#!/bin/bash
exec java ${JVM_OPTS} -jar /app/jars/${JAR_NAME}

2.4 准备基础镜像

通过docker官网或其他途径下载openjdk的基础镜像(这里使用的是openjdk17)

使用tag将镜像重新命名

docker tag registry.zhijiasoft.com/public/openjdk:24-ea-17-jdk-slim-bullseye openjdk:17

三、操作流程

3.1构建镜像与启动容器

# 构建镜像
docker build -t myapp:dynamic .# 启动容器(挂载Jar目录)
docker run -d --name myapp -v /app/jars:/app/jars  -v /app/logs:/app/logs   -e JAR_NAME="app-v1.0.jar"  -p 8080:8080 myapp:dynamicdocker run -d --name myapp \-v /app(宿主机)/jars:/app/jars \  # Jar包映射路径-v /app(宿主机)/logs:/app/logs \  # 日志持久化-e JAR_NAME="app-v1.0.jar" \ # 指定初始Jar名-p 8080:8080 \myapp:dynamic

3.2 更新jar包操作

3.2.1 通过修改包的版本来更新版本
# 1. 上传新Jar到宿主机目录(如/app-v2.0.jar)
cp app-v2.0.jar /宿主机/jars/# 2. 修改环境变量指向新文件
docker update --env JAR_NAME="app-v2.0.jar" myapp# 3. 重启容器生效
docker restart myapp
3.2.2 通过更换同名文件来更新版本
cd /app/jars
mv app-v1.0.jar app-v1.0.jar.bak
cp -a  ?/new.app.jar  ./app-v1.0.jar
docker restart myapp

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词