FROM node:10-buster-slim as base LABEL maintainer="quentinduchemin@tuta.io" ENV NODE_ENV=production FROM base as downloader ARG ETHERPAD_VERSION_BUILD=1.8.6 ARG ETHERPAD_PLUGINS="\ ep_adminpads2 ep_align ep_author_hover ep_back_button ep_chatdate \ ep_comments_page ep_delete_after_delay ep_delete_empty_pads ep_font_color \ ep_font_family ep_headings2 ep_markdown ep_message_all ep_pad_activity_nofication_in_title \ ep_pads_stats ep_prompt_for_name ep_set_title_on_pad \ ep_subscript_and_superscript" RUN apt-get update && \ apt-get install -y \ curl \ gzip \ jpegoptim \ libssl-dev \ optipng \ pkg-config \ python \ unzip && \ mkdir -p /opt/etherpad-lite/ # Try to stick to the LDAP UID for etherpad (OU=services) # WARNING: is also defined hereinbelow ARG UID=5004 RUN useradd --uid ${UID} --create-home etherpad RUN chown etherpad /opt/etherpad-lite WORKDIR /opt/etherpad-lite # Install Etherpad, as user etherpad USER etherpad RUN curl -SL https://github.com/ether/etherpad-lite/archive/${ETHERPAD_VERSION_BUILD}.zip > etherpad.zip && \ unzip etherpad && \ rm -Rf etherpad.zip etherpad-lite-${ETHERPAD_VERSION_BUILD}/.git && \ mv etherpad-lite-${ETHERPAD_VERSION_BUILD}/* . && \ bin/installDeps.sh COPY --chown=etherpad ./landing-page ./src/templates/landing-page # Build and replace landing page RUN npm install minify && \ ./src/templates/landing-page/build/build.sh && \ cp ./src/templates/landing-page/index.html src/templates/index.html && \ cp -r ./src/templates/landing-page/static/* src/static/ # Install plugins RUN for PLUGIN_NAME in ${ETHERPAD_PLUGINS}; do npm install "${PLUGIN_NAME}"; done && \ # Change default hard-coded pad title sed -i 's|Untitled Pad|Nouveau pad|g' node_modules/ep_set_title_on_pad/templates/title.ejs && \ sed -i 's|Untitled Pad|Nouveau pad|g' node_modules/ep_set_title_on_pad/static/tests/frontend/specs/atest.js # Construction de l'image finale FROM base # Try to stick to the LDAP UID for etherpad (OU=services) # WARNING: is also defined hereinabove ARG UID=5004 RUN useradd --uid ${UID} --create-home etherpad USER etherpad # Import des fichiers téléchargés dans l'image downloader COPY --from=downloader /opt/etherpad-lite /opt/etherpad-lite/ # Install debian packages, as root USER root RUN apt-get update && \ apt-get install -y curl nano postgresql-client abiword && \ rm -rf /var/lib/apt/lists/* # Created folder for deleted pads RUN mkdir /opt/etherpad-lite/deleted_pads && \ chown -R etherpad:etherpad /opt/etherpad-lite/deleted_pads # Set etherpad as owner of etherpad (permission for its content was already set in downloader) RUN chown etherpad:etherpad /opt/etherpad-lite # Copy entrypoint script COPY entrypoint.sh /opt/etherpad-lite/entrypoint.sh RUN chmod +x /opt/etherpad-lite/entrypoint.sh && \ usermod -d /opt/etherpad-lite etherpad # Create path owned by etherpad to mount the API key RUN mkdir /mountedAPIkey && chown etherpad:etherpad /mountedAPIkey # Settings for entrypoint USER etherpad EXPOSE 8080 HEALTHCHECK --interval=20s --timeout=3s CMD curl --fail http://localhost:8080 || exit 1 WORKDIR /opt/etherpad-lite/ ENV ABIWORD "/usr/bin/abiword" #installed here by debian ENTRYPOINT ["/opt/etherpad-lite/entrypoint.sh", "/opt/etherpad-lite/bin/run.sh" ]