diff --git a/.dockerignore b/.dockerignore index 241e560df6..864179fda5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,2 +1,2 @@ * - +!entrypoint.sh diff --git a/Dockerfile.latest b/Dockerfile.latest index 9d349c5dc1..32173f8fe4 100644 --- a/Dockerfile.latest +++ b/Dockerfile.latest @@ -1,30 +1,27 @@ -FROM node:16-alpine +FROM alpine:3.17 ENV IPFS_VERSION=latest ENV IPFS_MONITORING=1 ENV IPFS_PATH=/root/.jsipfs -ENV BUILD_DEPS='libnspr4 libnspr4-dev libnss3' -RUN apk add --no-cache git python3 build-base - -# Hopefully remove when https://github.com/node-webrtc/node-webrtc/pull/694 is merged -RUN npm install -g ipfs@"$IPFS_VERSION" - -# Make the image a bit smaller -RUN npm cache clear --force -RUN apk del build-base python3 git - -# Configure jsipfs -RUN jsipfs init - -RUN jsipfs version - -# Allow connections from any host -RUN sed -i.bak "s/127.0.0.1/0.0.0.0/g" $IPFS_PATH/config +RUN \ + apk add --no-cache catatonit bash procps nodejs && \ + apk add --no-cache --virtual .build-deps npm git build-base python3 && \ + npm install -g --build-from-source ipfs@"$IPFS_VERSION" && \ + npm cache clear --force && \ + apk del .build-deps && \ + rm -rf /node-* /SHASUMS256.txt /tmp/* /root/.electron /root/.cache \ + /sbin/apk /etc/apk /lib/apk /usr/share/apk /var/lib/apk \ + /usr/share/man/* /usr/share/doc /root/.npm /root/.node-gyp /root/.config \ + /usr/lib/node_modules/npm/man /usr/lib/node_modules/npm/doc /usr/lib/node_modules/npm/docs \ + /usr/lib/node_modules/npm/html /usr/lib/node_modules/npm/scripts && \ + { rm -rf /root/.gnupg || true; } EXPOSE 4002 EXPOSE 4003 EXPOSE 5002 EXPOSE 9090 -CMD jsipfs daemon +COPY entrypoint.sh /entrypoint.sh + +CMD ["catatonit", "-g", "/entrypoint.sh"] diff --git a/Dockerfile.next b/Dockerfile.next index 966979cf03..a642c859c3 100644 --- a/Dockerfile.next +++ b/Dockerfile.next @@ -1,30 +1,27 @@ -FROM node:16-alpine +FROM alpine:3.17 ENV IPFS_VERSION=next ENV IPFS_MONITORING=1 ENV IPFS_PATH=/root/.jsipfs -ENV BUILD_DEPS='libnspr4 libnspr4-dev libnss3' -RUN apk add --no-cache git python3 build-base - -# Hopefully remove when https://github.com/node-webrtc/node-webrtc/pull/694 is merged -RUN npm install -g ipfs@"$IPFS_VERSION" - -# Make the image a bit smaller -RUN npm cache clear --force -RUN apk del build-base python3 git - -# Configure jsipfs -RUN jsipfs init - -RUN jsipfs version - -# Allow connections from any host -RUN sed -i.bak "s/127.0.0.1/0.0.0.0/g" $IPFS_PATH/config +RUN \ + apk add --no-cache catatonit bash procps nodejs && \ + apk add --no-cache --virtual .build-deps npm git build-base python3 && \ + npm install -g --build-from-source ipfs@"$IPFS_VERSION" && \ + npm cache clear --force && \ + apk del .build-deps && \ + rm -rf /node-* /SHASUMS256.txt /tmp/* /root/.electron /root/.cache \ + /sbin/apk /etc/apk /lib/apk /usr/share/apk /var/lib/apk \ + /usr/share/man/* /usr/share/doc /root/.npm /root/.node-gyp /root/.config \ + /usr/lib/node_modules/npm/man /usr/lib/node_modules/npm/doc /usr/lib/node_modules/npm/docs \ + /usr/lib/node_modules/npm/html /usr/lib/node_modules/npm/scripts && \ + { rm -rf /root/.gnupg || true; } EXPOSE 4002 EXPOSE 4003 EXPOSE 5002 EXPOSE 9090 -CMD jsipfs daemon +COPY entrypoint.sh /entrypoint.sh + +CMD ["catatonit", "-g", "/entrypoint.sh"] diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000000..98156831e4 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +if [[ -d "$IPFS_PATH/repo.lock" ]]; then + echo "Automatically removing a stale repo lock." + rm -rf $IPFS_PATH/repo.lock +fi + +if ! [[ -f "$IPFS_PATH" ]]; then + jsipfs init +fi + +jsipfs daemon & \ +wait -n