定制专业网站,个人网站源代码,安徽合肥网站建设,亲子游网站建设内容通用的将jar制作成docker镜像sh脚本
为了在将 JAR 制作成 Docker 镜像的过程中创建日志目录#xff0c;可以对之前的脚本进行扩展。以下是改进后的脚本#xff0c;会在镜像构建时在容器内创建日志目录#xff0c;并将日志文件挂载到该目录下。
在生成的 Dockerfile 中添加…通用的将jar制作成docker镜像sh脚本
为了在将 JAR 制作成 Docker 镜像的过程中创建日志目录可以对之前的脚本进行扩展。以下是改进后的脚本会在镜像构建时在容器内创建日志目录并将日志文件挂载到该目录下。
在生成的 Dockerfile 中添加创建日志目录的命令。在启动 JAR 应用时将日志输出到该日志目录。
脚本代码
#!/bin/bash# 检查参数数量
if [ $# -ne 4 ]; thenecho 用法: $0 jar文件路径 镜像名称 镜像版本 日志文件名exit 1
fi# 获取输入参数
JAR_FILE$1
IMAGE_NAME$2
IMAGE_VERSION$3
LOG_FILE_NAME$4# 检查 JAR 文件是否存在
if [ ! -f $JAR_FILE ]; thenecho 错误: 指定的 JAR 文件 $JAR_FILE 不存在。exit 1
fi# 获取 JAR 文件名
JAR_FILENAME$(basename $JAR_FILE)# 日志目录名
LOG_DIR/app/logs# 生成 Dockerfile
cat EOF Dockerfile
# 使用官方的 OpenJDK 基础镜像
FROM openjdk:17-jdk-slim# 设置工作目录
WORKDIR /app# 创建日志目录
RUN mkdir -p $LOG_DIR# 将 JAR 文件复制到工作目录
COPY $JAR_FILE /app/# 暴露应用程序使用的端口可根据实际情况修改
EXPOSE 8080# 定义启动命令将日志输出到指定日志文件
CMD [sh, -c, java -jar $JAR_FILENAME $LOG_DIR/$LOG_FILE_NAME 21]
EOF# 构建 Docker 镜像
docker build -t $IMAGE_NAME:$IMAGE_VERSION .# 检查构建是否成功
if [ $? -eq 0 ]; thenecho Docker 镜像 $IMAGE_NAME:$IMAGE_VERSION 构建成功。
elseecho Docker 镜像构建失败。
fi# 删除生成的 Dockerfile
rm Dockerfile代码解释
日志目录定义LOG_DIR/app/logs 定义了容器内的日志目录路径。在 Dockerfile 中创建日志目录RUN mkdir -p $LOG_DIR 在容器构建时创建日志目录-p 选项确保即使父目录不存在也会一并创建。日志输出重定向CMD [sh, -c, java -jar $JAR_FILENAME $LOG_DIR/自定义.log 21] 将 JAR 应用的标准输出和标准错误输出都重定向到 $LOG_DIR/自定义.log 文件中。
使用方法
保存脚本为 build_jar_image.sh。赋予执行权限
chmod x build_jar_image.sh运行脚本替换相应参数
./build_jar_image.sh jar文件路径 镜像名称 镜像版本 日志文件名示例
假设你的 JAR 文件路径为 /path/to/your/app.jar镜像名称为 myapp-image镜像版本为 1.0日志文件名为 app.log则可以使用以下命令构建镜像
./build_jar_image.sh /path/to/your/app.jar myapp-image 1.0 app.log这样在基于该脚本构建的 Docker 镜像运行时JAR 应用产生的日志就会被记录到容器内的 /app/logs/app.log 文件中。