diff options
Diffstat (limited to 'docker')
| -rw-r--r-- | docker/Dockerfile | 65 | ||||
| -rw-r--r-- | docker/docker-compose.dev.yml | 6 | ||||
| -rw-r--r-- | docker/docker-compose.yml | 2 | ||||
| -rw-r--r-- | docker/yarn.lock | 4 |
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 - - |
