diff --git a/README.md b/README.md index b2df426..842b2d3 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,63 @@ sudo systemctl start document-server --- +## 构建Docker镜像以便于通过Docker容器运行 + +1.先通过maven打包[jodconverter-document-server](document-server/jodconverter-document-server) + +2.执行[build.sh](document-docker/build.sh) + +3.通过`docker load -i document-server-1.0.tar.gz`导入镜像,通过`docker ps | grep document-server`查看镜像版本 + +4.编写`docker-compose.yml`,在其中指定镜像启动 +```yml +version: '3.8' +services: + document-server: + image: document-server:1.0 + environment: + - CUSTOM_PORT=3000 + - CUSTOM_HTTPS_PORT=3001 + - DOCUMENT_SERVER_PORT=9004 + - PORT_NUMBERS=2001,2002,2003 + - MAX_TASKS_PER_PROCESS=100 + ports: + # 用于通过http访问libreoffice + - 3000:3000 + # 用于通过https访问libreoffice + - 3001:3001 + # 文书转换服务端口,用于document-api远程调用document-server + - 9004:9004 + volumes: + # libreoffice的配置保存路径 + - ./config:/config + # document-server的配置,如不指定,则以默认为准。建议通过环境变量修改关键配置 + - ./application.yml:/app/application.yml + restart: unless-stopped +``` + +`application.yml`默认内容如下: +```yml +server: + port: ${DOCUMENT_SERVER_PORT:9004} + +jodconverter: + local: + # 启动本地转换 + enabled: true + # macOS下:program/soffice 的 program 所在目录 或 MacOS/soffice 的 MacOS 所在目录 + # windows下:program/soffice.exe 的 program 所在目录 + # linux下:program/soffice.bin 的 program 所在目录 + # 如果不配置,则自动查找 + #office-home: /Applications/LibreOffice.app/Contents + # 一个端口表示一个常驻进程,默认只有一个进程,端口为2002 + port-numbers: ${PORT_NUMBERS:2002} + # 每个进程最多处理多个任务,默认为200 + max-tasks-per-process: ${MAX_TASKS_PER_PROCESS:200} +``` + +--- + ## windows下才用[docto-document-server](document-server/docto-document-server) 通过`java -jar ./document-server-2.0.0.jar --spring.config.location=./application.yml`执行 \ No newline at end of file diff --git a/document-api/pom.xml b/document-api/pom.xml index 1bb0f54..fc02e92 100644 --- a/document-api/pom.xml +++ b/document-api/pom.xml @@ -1,59 +1,59 @@ - 4.0.0 - - com.optima - document - 2.0.0 - - document-api - Document API - 文档操作api - - - - - org.projectlombok - lombok - 1.16.20 - provided - - + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + + com.optima + document + 2.0.0 + + document-api + Document API + 文档操作api + + + + + org.projectlombok + lombok + 1.16.20 + provided + + - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.3.0 - + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + - - - org.apache.maven.plugins - maven-source-plugin - 3.2.1 - - - attach-sources - package - - jar-no-fork - - - - + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + package + + jar-no-fork + + + + - - - org.springframework.boot - spring-boot-maven-plugin - - true - - - - + + + org.springframework.boot + spring-boot-maven-plugin + + true + + + + diff --git a/document-docker/Dockerfile b/document-docker/Dockerfile new file mode 100644 index 0000000..d7aa283 --- /dev/null +++ b/document-docker/Dockerfile @@ -0,0 +1,34 @@ +FROM lscr.io/linuxserver/libreoffice:latest + +RUN echo "https://mirrors.tencent.com/alpine/v$(cut -d'.' -f1,2 /etc/alpine-release)/main/" > /etc/apk/repositories +RUN echo "https://mirrors.tencent.com/alpine/v$(cut -d'.' -f1,2 /etc/alpine-release)/community/" >> /etc/apk/repositories + +RUN apk update +RUN apk add --no-cache openjdk17-jre +RUN rm -rf /var/cache/apk/* + +WORKDIR /app +RUN mkdir -p /app/logs + +COPY app/document-server-*.jar /app/application.jar +COPY app/application.yml /app/application.yml + +COPY fonts /usr/share/fonts/truetype + +COPY entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh + +#see https://hub.docker.com/r/linuxserver/libreoffice +ENV PUID=1000 +ENV PGID=1000 +ENV TZ=Asia/Shanghai +ENV LC_ALL=zh_CN.UTF-8 +ENV TITLE="Libre Office" +ENV CUSTOM_PORT=3000 +ENV CUSTOM_HTTPS_PORT1=3001 + +ENV DOCUMENT_SERVER_PORT=9004 +ENV PORT_NUMBERS=2002 +ENV MAX_TASKS_PER_PROCESS=200 + +ENTRYPOINT ["/entrypoint.sh"] \ No newline at end of file diff --git a/document-docker/build.sh b/document-docker/build.sh new file mode 100644 index 0000000..aec6b8a --- /dev/null +++ b/document-docker/build.sh @@ -0,0 +1,34 @@ +#!/bin/bash +# 设置Maven路径 +export PATH=$PATH:/Volumes/Working/Software/apache-maven-3.9.3/bin + +# 创建临时目录存放需要运行的jar +mkdir -p app + +# 构建jar +echo 构建jar +mvn -f ../document-server/jodconverter-document-server/pom.xml clean package -Dmaven.test.skip=true +echo jar构建完成 + +# 复制所需文件 +cp ../document-server/jodconverter-document-server/target/document-server-*.jar app/ +cp ../document-server/jodconverter-document-server/target/application.yml app/ + +# 执行构建 + +#amd64 +echo 开始构建amd64镜像... +docker buildx build --platform linux/amd64 -t document-server:1.0 ./ +rm -rf document-server-1.0.tar.gz +docker save document-server:1.0 | gzip > document-server-1.0.tar.gz +echo amd64镜像构建成功. + +#arm64 +echo 开始构建arm64镜像... +docker buildx build --platform linux/arm64 -t document-server:1.0.arm64 ./ +rm -rf document-server-1.0.arm64.tar.gz +docker save document-server:1.0.arm64 | gzip > document-server-1.0.arm64.tar.gz +echo arm64镜像构建成功. + +# 清理临时文件 +rm -rf app diff --git a/document-docker/entrypoint.sh b/document-docker/entrypoint.sh new file mode 100644 index 0000000..2595e10 --- /dev/null +++ b/document-docker/entrypoint.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# 确保目录存在 +mkdir -p /etc/services.d/java + +# 创建Java服务启动脚本 +cat > /etc/services.d/java/run <