aboutsummaryrefslogtreecommitdiffstats
path: root/Dockerfile
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-02-20 21:23:28 +0000
committerMohamedBassem <me@mbassem.com>2024-02-20 21:38:14 +0000
commit8711bca9db49546d265fc119b5dcf3eb2db22095 (patch)
tree16bf6fd86da06a80014dfb5738e43a63af038793 /Dockerfile
parentdbdde49c1e4870f402dc8901e0bf78abb790caf9 (diff)
downloadkarakeep-8711bca9db49546d265fc119b5dcf3eb2db22095.tar.zst
docker: Add a docker-based dev environment
Diffstat (limited to 'Dockerfile')
-rw-r--r--Dockerfile103
1 files changed, 0 insertions, 103 deletions
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index fc1950b4..00000000
--- a/Dockerfile
+++ /dev/null
@@ -1,103 +0,0 @@
-################# The Web App ##############
-
-# Rebuild the source code only when needed
-FROM node:21-alpine AS web_builder
-
-# 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 packages/db packages/db
-COPY packages/web packages/web
-COPY packages/shared packages/shared
-COPY package.json yarn.lock .yarnrc.yml .
-
-ENV NEXT_TELEMETRY_DISABLED 1
-
-RUN corepack enable && \
- cd /app/packages/db && \
- yarn dlx prisma generate && \
- cd /app/packages/web/ && \
- yarn install --immutable && \
- yarn next experimental-compile
-
-FROM node:21-alpine AS web
-WORKDIR /app
-
-ENV NODE_ENV production
-ENV NEXT_TELEMETRY_DISABLED 1
-
-COPY --from=web_builder --chown=node:node /app/packages/web/.next/standalone ./
-COPY --from=web_builder /app/packages/web/public ./packages/web/public
-
-# Set the correct permission for prerender cache
-RUN mkdir -p ./package/web/.next
-RUN chown node:node ./packages/web/.next
-
-# Automatically leverage output traces to reduce image size
-# https://nextjs.org/docs/advanced-features/output-file-tracing
-COPY --from=web_builder --chown=node:node /app/packages/web/.next/static ./packages/web/.next/static
-
-WORKDIR /app/packages/web
-USER root
-EXPOSE 3000
-
-ENV PORT 3000
-# set hostname to localhost
-ENV HOSTNAME "0.0.0.0"
-
-# server.js is created by next build from the standalone output
-# https://nextjs.org/docs/pages/api-reference/next-config-js/output
-CMD ["node", "server.js"]
-
-################# The workers builder ##############
-
-FROM node:21-alpine AS workers_builder
-WORKDIR /app
-
-# Install chromium needed for puppeteer
-RUN apk add --no-cache make g++ py3-pip linux-headers
-
-COPY packages/db/package.json packages/db/package.json
-COPY packages/shared/package.json packages/shared/package.json
-COPY packages/workers/package.json packages/workers/package.json
-COPY package.json yarn.lock .yarnrc.yml .
-
-RUN corepack enable && \
- cd /app/packages/workers && \
- yarn workspaces focus --production && \
- cd /app/packages/db && \
- yarn dlx prisma generate
-
-
-################# The workers ##############
-
-FROM node:21-alpine AS workers
-WORKDIR /app
-
-# Install chromium needed for puppeteer
-RUN apk add --no-cache chromium runuser
-ENV PUPPETEER_SKIP_DOWNLOAD true
-ENV CHROME_PATH "/usr/bin/chromium-browser"
-ENV BROWSER_EXECUTABLE_PATH "/app/start-chrome.sh"
-ENV BROWSER_USER_DATA_DIR="/tmp/chrome"
-
-RUN echo '#!/bin/sh' >> /app/start-chrome.sh && \
- echo 'set -x;' >> /app/start-chrome.sh && \
- echo 'id -u chrome &>/dev/null || adduser -S chrome' >> /app/start-chrome.sh && \
- echo 'mkdir -p /tmp/chrome && chown chrome /tmp/chrome' >> /app/start-chrome.sh && \
- echo 'runuser -u chrome -- $CHROME_PATH $@' >> /app/start-chrome.sh && \
- chmod +x /app/start-chrome.sh
-
-COPY packages/db packages/db
-COPY packages/shared packages/shared
-COPY packages/workers packages/workers
-COPY package.json yarn.lock .yarnrc.yml .
-COPY --from=workers_builder /app/node_modules /app/node_modules
-
-RUN corepack enable && cd packages/db && yarn dlx prisma generate
-
-WORKDIR /app/packages/workers
-USER root
-
-CMD ["yarn", "run", "start:prod"]