diff --git a/Dockerfile b/Dockerfile index 5b22f39bf..6a81d9701 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,48 @@ -FROM node:6-alpine +FROM node:6-stretch-slim -COPY . /cryptpad -WORKDIR /cryptpad - -RUN apk add --no-cache git tini \ - && npm install --production \ - && npm install -g bower \ - && bower install --allow-root - -EXPOSE 3000 3001 +# You want USE_SSL=true if not putting cryptpad behind a proxy +ENV USE_SSL=false +ENV STORAGE=\'./storage/file\' +ENV LOG_TO_STDOUT=true +# Persistent storage needs VOLUME /cryptpad/datastore VOLUME /cryptpad/customize +VOLUME /cryptpad/blobstage +VOLUME /cryptpad/pins +VOLUME /cryptpad/tasks +VOLUME /cryptpad/block -ENV USE_SSL=false -ENV STORAGE=\'./storage/file\' -ENV LOG_TO_STDOUT=true +# Required packages +# jq is a build only dependency, removed in cleanup stage +RUN apt-get update \ + && apt-get install -y --no-install-recommends \ + git jq python + +# Install tini for faux init +# sleep 1 is to ensure overlay2 can catch up with the copy prior to running chmod +COPY ./docker-install-tini.sh / +RUN chmod a+x /docker-install-tini.sh \ + && sleep 1 \ + && /docker-install-tini.sh \ + && rm /docker-install-tini.sh + +# Cleanup apt +RUN apt-get remove -y --purge jq python \ + && apt-get auto-remove -y \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* +# Install cryptpad +COPY . /cryptpad +WORKDIR /cryptpad +RUN npm install --production \ + && npm install -g bower \ + && bower install --allow-root + +# Unsafe / Safe ports +EXPOSE 3000 3001 + +# Run cryptpad on startup CMD ["/sbin/tini", "--", "/cryptpad/container-start.sh"] + diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 deleted file mode 100644 index ec11ddc55..000000000 --- a/Dockerfile.arm64 +++ /dev/null @@ -1,25 +0,0 @@ -FROM arm64v8/node:6 - -COPY . /cryptpad -WORKDIR /cryptpad - -RUN npm config set unsafe-perm true - -ADD https://github.com/krallin/tini/releases/download/v0.18.0/tini-static-arm64 /sbin/tini -RUN chmod a+x /sbin/tini - -RUN apt install -y git \ - && npm install --production \ - && npm install -g bower \ - && bower install --allow-root - -EXPOSE 3000 3001 - -VOLUME /cryptpad/datastore -VOLUME /cryptpad/customize - -ENV USE_SSL=false -ENV STORAGE=\'./storage/file\' -ENV LOG_TO_STDOUT=true - -CMD ["/sbin/tini", "--", "/cryptpad/container-start.sh"] diff --git a/docker-install-tini.sh b/docker-install-tini.sh new file mode 100755 index 000000000..a9a92e871 --- /dev/null +++ b/docker-install-tini.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +# Figure out latest release via GitHub API +release=$(curl --silent "https://api.github.com/repos/krallin/tini/releases/latest" | jq -r .tag_name) + +# _Reliable_ way to get which arch for tini download +arch=$(python <