ujcms-v10.1.3/Dockerfile

54 lines
2.4 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# $ docker build -t ujcms:x.x.x .
FROM bellsoft/liberica-openjre-debian:24-cds AS builder
WORKDIR /builder
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} ujcms.jar
RUN java -Djarmode=tools -jar ujcms.jar extract --layers --destination extracted
COPY src/main/resources/application-docker.yaml ./extracted/application/config/application.yaml
FROM bellsoft/liberica-openjre-debian:24-cds
# 安装 procps(debian 需安装ubuntu 不需要)。否则没有 ps 命令jodconverter 无法启动
# 安装 libreoffice。如开启 doc 导入及文库功能,则需要安装
# 安装 default-mysql-client(ubuntu 可安装 mysql-client)。如需使用数据库备份功能,则需要安装
#RUN apt-get update && apt-get --no-install-recommends install -y procps libreoffice default-mysql-client && rm -rf /var/lib/apt/lists/*
# 也可安装国内镜像源后,再安装 libreoffice default-mysql-client
# bullseye 及之前为 /etc/apt/sources.listbookworm 及之后为 /etc/apt/sources.list.d/debian.sources
# 阿里云镜像源mirrors.aliyun.com/debian
# 腾讯云镜像源mirrors.cloud.tencent.com/debian
#RUN sed -e 's|deb.debian.org/debian|mirrors.cloud.tencent.com/debian|g' \
# -i /etc/apt/sources.list.d/debian.sources \
# && apt-get update && apt-get --no-install-recommends install -y procps libreoffice default-mysql-client && rm -rf /var/lib/apt/lists/*
# 文库功能 docx 转 pdf 时如缺少字体,可复制相应字体到镜像中。常用字体通常可在 C:\Windows\Fonts 中找到
#COPY docker/fonts/* /usr/share/fonts/zh-cn/
# 使用非 root 用户运行容器,可能因权限问题,无法访问挂载目录
#USER 1000:1000
WORKDIR /ujcms
COPY --from=builder /builder/extracted/dependencies/ ./
COPY --from=builder /builder/extracted/spring-boot-loader/ ./
COPY --from=builder /builder/extracted/snapshot-dependencies/ ./
COPY --from=builder /builder/extracted/application/ ./
COPY src/main/resources/application-docker.yaml ./config/application.yaml
# 将初始文件拷贝至 /usr/src/ujcms再由初始化脚本复制到 /ujcms/static避免文件内容被挂载目录覆盖
COPY src/main/webapp/ /usr/src/ujcms/
RUN rm -f /usr/src/ujcms/WEB-INF/*.xml; \
# 写入时间戳,用于判断 cp 文件是否需要更新
date +%s > /usr/src/ujcms/cp/.timestamp;
VOLUME ["/ujcms/static"]
EXPOSE 8080
COPY --chmod=755 docker/docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["java", "-jar", "ujcms.jar"]