From 7e2fa43b815f3e0bc2dce23636c3872abfb2f041 Mon Sep 17 00:00:00 2001 From: bluezealot Date: Fri, 24 Feb 2023 18:10:01 +0800 Subject: [PATCH] Add docker configs. --- docker/dockerfile | 59 ++++++++++++++++++++++++++++++++++++++++++++ docker/entrypoint.sh | 36 +++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 docker/dockerfile create mode 100644 docker/entrypoint.sh diff --git a/docker/dockerfile b/docker/dockerfile new file mode 100644 index 0000000..e41f25d --- /dev/null +++ b/docker/dockerfile @@ -0,0 +1,59 @@ +FROM ubuntu:jammy-20230126 + +ARG uid=1001 +ARG gid=1001 +ARG basedir=workspace +ENV VERSION ce_v1.0.0 +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 calibre +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()" + +# 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 +# Get and Unpack Tomcat +RUN wget https://github.com/mnt-ltd/moredoc/releases/download/v1.0.0/moredoc_${VERSION}_linux_amd64.zip -O ~/moredoc_${VERSION}_linux_amd64.zip +RUN cd ~/ && \ + mkdir $basedir && \ + unzip -n ~/moredoc_${VERSION}_linux_amd64.zip -d $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 + diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 0000000..aba755a --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +log() { + local type="$1"; shift + printf '%s [%s] [Entrypoint]: %s\n' "$(date --rfc-3339=seconds)" "$type" "$*" +} + +moredoc_note() { + log Note "$@" +} + +_main() { + cd ~ + moredoc_note "Current path is:" + pwd + moredoc_note "Current folder contains:" + ls + if [ -f app.toml ] + then + moredoc_note "Start server" + exec ./workspace/moredoc serve + else + moredoc_note "Init server" + ESCAPED_ORIGIN=$(printf '%s\n' "root:root@tcp(localhost:3306)/moredoc?charset=utf8mb4&loc=Local&parseTime=true" | sed -e 's/[\/&]/\\&/g') + ESCAPED_REPLACE=$(printf '%s\n' "${MYSQL_CONNECTION}" | sed -e 's/[\/&]/\\&/g') + sed "s/$ESCAPED_ORIGIN/$ESCAPED_REPLACE/g" ./workspace/app.example.toml > ./workspace/app.toml + ls ./workspace + moredoc_note "Init DB" + cd workspace/ + ./moredoc syncdb + moredoc_note "Start server" + exec ./moredoc serve + fi +} + +_main "$@" \ No newline at end of file