aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Dockerfile
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2021-06-30 13:24:28 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2021-06-30 13:24:28 +0300
commit752b96afdf2fa285492deaf3a676d2b2c2e47c9f (patch)
tree2f871d262bd2ef87d52e30737b5ead2fc2cd738e /backend/Dockerfile
parentf021b52028f5965516671b7f53e7e71543a8ae52 (diff)
Dockerize
Diffstat (limited to 'backend/Dockerfile')
-rw-r--r--backend/Dockerfile27
1 files changed, 27 insertions, 0 deletions
diff --git a/backend/Dockerfile b/backend/Dockerfile
new file mode 100644
index 0000000..1301b25
--- /dev/null
+++ b/backend/Dockerfile
@@ -0,0 +1,27 @@
+# Install dependencies only when needed
+FROM node:alpine AS deps
+# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
+RUN apk add --no-cache libc6-compat
+WORKDIR /app
+COPY package.json package-lock.json ./
+RUN npm ci --only-prod
+
+# Rebuild the source code only when needed
+FROM node:alpine AS runner
+WORKDIR /app
+
+ENV NODE_ENV production
+ENV PORT 4000
+
+RUN addgroup -g 1001 -S nodejs
+RUN adduser -S server -u 1001
+
+COPY --from=deps /app/package.json ./package.json
+COPY --from=deps /app/node_modules ./node_modules
+
+USER server
+
+EXPOSE 4000
+
+COPY *.ts *.json ./
+CMD ["npm", "start]