项目在本地导出PDF文件正常,部署到Linux服务器docker容器中导出就报错,百撕不得姐,经查,docker依赖的openjdk版本是8u112版本,而我本地是8u421版本,那就升级jdk的小版本试试。
在docker的中央仓库[点我直达]没有发现8u421的镜像,于是想到自己build一个jdk镜像。以下是步骤。
1. 从oracle官网下载[Download the Latest Java LTS Free]下载jdk-8u421的包
2. 新建目录/usr/local/jdk8u421,并将包拖放到此目录下。
3. 同级目录下创建一个Dockerfile来定义镜像内容,内容如下:
# 使用CentOS作为基础镜像
FROM centos:centos7
# 将JDK压缩包复制到镜像中
COPY jdk-8u421-linux-x64.tar.gz /tmp/
# 解压JDK压缩包到/opt目录
RUN mkdir -p /opt/java && \
tar -xzf /tmp/jdk-8u421-linux-x64.tar.gz -C /opt/java --strip-components=1
# 设置环境变量
ENV JAVA_HOME=/opt/java
ENV PATH=$PATH:$JAVA_HOME/bin
# 清理工作
RUN rm /tmp/jdk-8u421-linux-x64.tar.gz && \
yum clean all && \
rm -rf /var/cache/yum/*
4. 构建镜像:在包含Dockerfile的目录中打开终端,运行以下命令来构建镜像
docker build -t jdk8:8u421 .
这里,-t标志用于给镜像命名(在这个例子中是jdk8),8u421是标签,.表示Dockerfile在当前目录。
5. 运行容器:使用以下命令来运行一个基于你的新镜像的容器,并验证Java版本:
docker run --name jdk8u421 -it jdk8:8u421 java -version
在portainer中查看容器:
如何使用?
在自己的业务中使用构建的JDK 8u421镜像作为基础镜像:
FROM jdk8:8u421
WORKDIR /app
COPY ./*.jar /app
COPY ./application.yml /app/application.yml
# 设置JVM内存参数
ENV JAVA_OPTS="-Xmx512m -Xms512m"
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app/jeecg-module-business-start.jar"]