refactor docker to support arm32/arm64/amd64 all in one build
parent
20959f84ae
commit
9261aa193b
@ -1,20 +1,48 @@
|
||||
FROM node:6-alpine
|
||||
FROM node:6-stretch-slim
|
||||
|
||||
# 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
|
||||
|
||||
# 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 apk add --no-cache git tini \
|
||||
&& npm install --production \
|
||||
RUN npm install --production \
|
||||
&& npm install -g bower \
|
||||
&& bower install --allow-root
|
||||
|
||||
# Unsafe / Safe ports
|
||||
EXPOSE 3000 3001
|
||||
|
||||
VOLUME /cryptpad/datastore
|
||||
VOLUME /cryptpad/customize
|
||||
|
||||
ENV USE_SSL=false
|
||||
ENV STORAGE=\'./storage/file\'
|
||||
ENV LOG_TO_STDOUT=true
|
||||
|
||||
# Run cryptpad on startup
|
||||
CMD ["/sbin/tini", "--", "/cryptpad/container-start.sh"]
|
||||
|
||||
|
@ -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"]
|
@ -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 <<EOF
|
||||
from __future__ import print_function
|
||||
import platform
|
||||
processor = platform.machine()
|
||||
if processor == 'aarch64':
|
||||
print('arm64', end='')
|
||||
elif processor == 'x86 64' or processor == 'x86_64':
|
||||
print('amd64', end='')
|
||||
elif processor == 'armv7l':
|
||||
print('armhf', end='')
|
||||
|
||||
EOF
|
||||
)
|
||||
|
||||
# Download/install tini
|
||||
curl -L https://github.com/krallin/tini/releases/download/$release/tini-static-$arch \
|
||||
-o /sbin/tini
|
||||
chmod a+x /sbin/tini
|
||||
|
Loading…
Reference in New Issue