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