about summary refs log tree commit diff
path: root/Dockerfile.bskyogcard
diff options
context:
space:
mode:
Diffstat (limited to 'Dockerfile.bskyogcard')
-rw-r--r--Dockerfile.bskyogcard41
1 files changed, 41 insertions, 0 deletions
diff --git a/Dockerfile.bskyogcard b/Dockerfile.bskyogcard
new file mode 100644
index 000000000..aa68add59
--- /dev/null
+++ b/Dockerfile.bskyogcard
@@ -0,0 +1,41 @@
+FROM node:20.11-alpine3.18 as build
+
+# Move files into the image and install
+WORKDIR /app
+
+COPY ./bskyogcard/package.json ./
+COPY ./bskyogcard/yarn.lock ./
+RUN yarn install --frozen-lockfile
+
+COPY ./bskyogcard ./
+
+# build then prune dev deps
+RUN yarn build
+RUN yarn install --production --ignore-scripts --prefer-offline
+
+# Uses assets from build stage to reduce build size
+FROM node:20.11-alpine3.18
+
+RUN apk add --update dumb-init
+
+# Avoid zombie processes, handle signal forwarding
+ENTRYPOINT ["dumb-init", "--"]
+
+WORKDIR /app
+COPY --from=build /app /app
+RUN mkdir /app/data && chown node /app/data
+
+VOLUME /app/data
+EXPOSE 3000
+ENV CARD_PORT=3000
+ENV NODE_ENV=production
+# potential perf issues w/ io_uring on this version of node
+ENV UV_USE_IO_URING=0
+
+# https://github.com/nodejs/docker-node/blob/master/docs/BestPractices.md#non-root-user
+USER node
+CMD ["node", "--heapsnapshot-signal=SIGUSR2", "--enable-source-maps", "dist/bin.js"]
+
+LABEL org.opencontainers.image.source=https://github.com/bluesky-social/social-app
+LABEL org.opencontainers.image.description="Bsky Card Service"
+LABEL org.opencontainers.image.licenses=UNLICENSED