Docker部署魔豆文档
魔豆文档是一个开源的类似百度文档的文档管理项目,官网地址为
一、打标签
git tag -a 1.0.2 -m "1.0.2版本发布"
二、编译
编译前端
npm run generate
编译打包后端(如果在windows下推荐在git bash下执行)
make buildlinux
三、准备必要软件
需准备nodejs16.x的linux 64位安装包
使用到的构建镜像文件在docker文件夹下的结构
docker
dockerfile
moredoc_ce_1.0.2_linux_amd64.tar.gz (如果不想每次都将编译的包放到这里,也可以使用coding的构建件仓库,使用类似原有的wget的方式获取;也可以直接修改dockerfile,调整路径到构建包的路径地址,但要注意docker不支持上一级相对路径识别,需要把dockerfile等复制到项目根路径进行构建)
node.tar.gz(准备的nodejs16的linux包)
注意修改mysql的连接地址为服务器上的连接地址,在entrypoint.sh文件中,如果不修改,就在运行docker容器时指定环境变量
dockerfile的内容(注意调整里面的版本号与打包的版本号对应)
FROM ubuntu:jammy-20230126
ARG uid=1001
ARG gid=1001
ARG basedir=workspace
ARG DEBIAN_FRONTEND=noninteractive
EXPOSE 8880
# install wget
# install libreoffice
# install mupdf
# install supervisor
# install all needed tools
RUN apt-get update \
&& apt-get install -y wget \
&& apt-get install -y python3 \
&& apt-get install -y libreoffice \
&& apt-get install -y mupdf mupdf-tools \
&& apt-get install -y supervisor \
&& apt-get install -y libopengl0 \
&& apt-get install -y xz-utils \
&& apt-get install -y unzip \
&& rm -rf /var/lib/apt/lists/*
RUN apt-get update \
&& apt-get install -y language-pack-zh-hans \
&& apt-get install -y language-pack-ja \
&& apt-get install -y chinese* \
&& apt-get install -y libreoffice-l10n-zh-cn libreoffice-help-zh-cn \
&& apt-get install -y libreoffice-help-ja \
&& rm -rf /var/lib/apt/lists/*
# install inkscape
RUN apt-get update \
&& apt-get install -y software-properties-common \
&& add-apt-repository ppa:inkscape.dev/stable \
&& apt-get update \
&& apt-get install -y inkscape
# install calibre
RUN apt-get update \
&& apt-get install -y calibre
# COPY docker/linux-installer.py /linux-installer.py
# RUN pythn3 /linux-installer.py
# RUN wget -nv -O- https://download.calibre-ebook.com/linux-installer.py | python3 -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"
# install nodejs and svgo pm2
COPY node.tar.gz /usr/local/node.tar.gz
RUN tar -xzf /usr/local/node.tar.gz -C /usr/local --strip-components=1
ENV PATH="/usr/local/bin:${PATH}"
RUN rm -f /usr/local/node.tar.gz
RUN npm -v
RUN npm i -g svgo
RUN npm i -g pm2
# Add non root user
RUN addgroup --gid $gid --system moredoc\
&& adduser --uid $uid --disabled-password --system --gid $gid moredoc
# change to moredoc user
USER moredoc
WORKDIR /home/moredoc
ENV VERSION 1.0.2
# Get and Unpack Tomcat
# RUN wget https://github.com/mnt-ltd/moredoc/releases/download/v1.1.0/moredoc_${VERSION}_linux_amd64.zip -O ~/moredoc_${VERSION}_linux_amd64.zip
COPY moredoc_ce_${VERSION}_linux_amd64.tar.gz /home/moredoc/moredoc_ce_${VERSION}_linux_amd64.tar.gz
RUN cd ~/ && ls -al ~/ && \
mkdir -p ~/$basedir && \
tar -zxf ~/moredoc_ce_${VERSION}_linux_amd64.tar.gz -C ~/$basedir/
COPY entrypoint.sh entrypoint.sh
USER root
RUN chmod 777 entrypoint.sh
RUN chmod -R 777 /home/moredoc
USER moredoc
RUN mkdir $basedir/cache
RUN mkdir $basedir/documents
RUN mkdir $basedir/uploads
VOLUME $basedir/cache
VOLUME $basedir/documents
VOLUME $basedir/uploads
ENTRYPOINT ["./entrypoint.sh"]
ENV MYSQL_CONNECTION=dummy
CMD $MYSQL_CONNECTION
对开源仓库提供的dockefile作了微调,达到需要安装的插件都能安装上
四、构建镜像
进入docker文件夹
docker build -f dockerfile -t moredoc:1.0.2 .
构建完成,可以直接跳到运行镜像,也可以推送到远程仓库或私有仓库使用
如果使用远程的docker镜像仓库,则可以通过push推送到远程仓库
比如这里我是用的coding的docker仓库,顺便安利一句,目前来说coding真的YYDS,我的代码仓库、构建件仓库都在这上面
https://www.coding.net
docker tag moredoc:1.0.2 cutu-docker.pkg.coding.net/xcloud/xcloud/moredoc:1.0.2
docker push cutu-docker.pkg.coding.net/xcloud/xcloud/moredoc:1.0.2
注意,需要先使用docker login命令进行登录,进入coding的镜像仓库可获取登录所需信息
五、运行镜像
我们可以直接docker run运行,也可以使用docker-compose运行,直接参看官网的运行配置即可,我使用的是1panel管理容器,如果有需要使用1pannel来管理,以及相关的ssl证书管理、域名解析配置等,请留言一下