aboutsummaryrefslogtreecommitdiffstats
path: root/docker
diff options
context:
space:
mode:
Diffstat (limited to 'docker')
-rw-r--r--docker/Dockerfile65
-rw-r--r--docker/docker-compose.dev.yml6
-rw-r--r--docker/docker-compose.yml2
-rw-r--r--docker/yarn.lock4
4 files changed, 32 insertions, 45 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 3f71d212..265235a5 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,24 +1,29 @@
-################# The Web App ##############
+################# Base Builder ##############
+FROM node:21-alpine AS base
-# Rebuild the source code only when needed
-FROM node:21-alpine AS web_builder
+WORKDIR /app
+ENV PNPM_HOME="/pnpm"
+ENV PATH="$PNPM_HOME:$PATH"
+RUN corepack enable
# 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 .
+RUN apk add --no-cache libc6-compat make g++ py3-pip linux-headers
+COPY . .
ENV NEXT_TELEMETRY_DISABLED 1
ENV PUPPETEER_SKIP_DOWNLOAD true
+RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
+
+################# The Web builder ##############
+
+# Rebuild the source code only when needed
+FROM base AS web_builder
+
+WORKDIR /app/packages/web
+
+RUN pnpm next experimental-compile
-RUN corepack enable && \
- cd /app/packages/web/ && \
- yarn install --immutable && \
- yarn next experimental-compile
+################# The Web App ##############
FROM node:21-alpine AS web
WORKDIR /app
@@ -51,22 +56,9 @@ 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 .
-ENV PUPPETEER_SKIP_DOWNLOAD true
-
-RUN corepack enable && \
- cd /app/packages/workers && \
- yarn workspaces focus --production
+FROM base AS workers_builder
+RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm deploy --filter @hoarder/workers --prod /prod
################# The workers ##############
@@ -79,16 +71,15 @@ ENV CHROME_PATH "/usr/bin/chromium-browser"
ENV BROWSER_EXECUTABLE_PATH "/app/start-chrome.sh"
ENV BROWSER_USER_DATA_DIR="/tmp/chrome"
-ADD docker/start-chrome.sh .
-RUN chmod +x /app/start-chrome.sh
+COPY --from=workers_builder /prod packages/workers
-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
+
+ADD docker/start-chrome.sh .
+RUN chmod +x start-chrome.sh
WORKDIR /app/packages/workers
+
USER root
-CMD ["yarn", "run", "start:prod"]
+CMD ["pnpm", "run", "start:prod"]
diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml
index b8c8c426..d9c89d88 100644
--- a/docker/docker-compose.dev.yml
+++ b/docker/docker-compose.dev.yml
@@ -12,7 +12,7 @@ services:
REDIS_HOST: redis
DATABASE_URL: "file:/data/db.db"
command:
- - yarn
+ - pnpm
- web
working_dir: /app
depends_on:
@@ -34,7 +34,7 @@ services:
DATABASE_URL: "file:/data/db.db"
# OPENAI_API_KEY: ...
command:
- - yarn
+ - pnpm
- workers
depends_on:
prep:
@@ -51,7 +51,7 @@ services:
command:
- /bin/sh
- -c
- - "corepack enable && yarn install --immutable && yarn run db:migrate"
+ - "corepack enable && pnpm install --frozen-lockfile && pnpm run db:migrate"
volumes:
redis:
diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml
index 1cb53a0f..ed9fb99d 100644
--- a/docker/docker-compose.yml
+++ b/docker/docker-compose.yml
@@ -36,7 +36,7 @@ services:
command:
- /bin/sh
- -c
- - "cd /app/packages/db && yarn run migrate"
+ - "cd /app/packages/db && pnpm run migrate"
volumes:
redis:
diff --git a/docker/yarn.lock b/docker/yarn.lock
deleted file mode 100644
index fb57ccd1..00000000
--- a/docker/yarn.lock
+++ /dev/null
@@ -1,4 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-