From 08d2962585b992744ae50134fa39e31c90c308a7 Mon Sep 17 00:00:00 2001 From: amateima <89395931+amateima@users.noreply.github.com> Date: Thu, 19 Sep 2024 18:55:52 +0300 Subject: [PATCH] fix: simplify docker setup (#41) Co-authored-by: Alexandru Matei --- .dockerignore | 13 ++++++++----- Dockerfile | 32 +++++--------------------------- apps/node/package.json | 1 + docker-compose.yml | 14 ++++---------- docker/dev.command.sh | 3 --- docker/migrations.command.sh | 9 --------- docker/prod.command.sh | 4 ---- package.json | 4 +++- 8 files changed, 21 insertions(+), 59 deletions(-) delete mode 100755 docker/dev.command.sh delete mode 100755 docker/migrations.command.sh delete mode 100755 docker/prod.command.sh diff --git a/.dockerignore b/.dockerignore index 3531cf3f..fb3f9807 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,9 +1,12 @@ -node_modules Dockerfile +docker-compose.yml +volumes +**/dist +**/node_modules .dockerignore -.vscode +.env +.git* +.husky .pnpm-store .turbo -**/dist -dist -.env +.vscode \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 0b005e20..500eefd7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Set the build image -FROM node:20 AS development +FROM node:20 # Set the work directory WORKDIR /usr/src/app @@ -21,32 +21,10 @@ COPY packages/template/package.json ./packages/template/package.json COPY packages/typescript-config/package.json ./packages/typescript-config/package.json # Build the dependencies into a node_modules folder -RUN pnpm install --frozen-lockfile --ignore-scripts +RUN pnpm install --frozen-lockfile # Copy the rest of the files & build the app -COPY ./apps ./apps -COPY ./packages ./packages -RUN pnpm build - -# Set the production image -FROM node:20-alpine AS production - -ARG NODE_ENV=production -ENV NODE_ENV=${NODE_ENV} - -WORKDIR /usr/src/app +COPY . . -# Copy pnpm from the development stage -COPY --from=development /usr/local/bin/pnpm /usr/local/bin/pnpm - -# Copy over the built files from the development stage -COPY --from=development /usr/src/app/apps ./apps -COPY --from=development /usr/src/app/packages ./packages -COPY --from=development /usr/src/app/node_modules ./node_modules - -# Change the working directory to the apps/node directory -WORKDIR /usr/src/app/apps/node - -COPY ./docker ./docker - -CMD ["sh", "./docker/prod.command.sh"] +# Build the monorepo +RUN pnpm build diff --git a/apps/node/package.json b/apps/node/package.json index 2a469f53..05c900dc 100644 --- a/apps/node/package.json +++ b/apps/node/package.json @@ -5,6 +5,7 @@ "main": "index.js", "scripts": { "start": "ts-node ./src/app", + "start:prod": "node dist/app", "build": "tsc -b", "format": "prettier --write src", "lint": "eslint --fix", diff --git a/docker-compose.yml b/docker-compose.yml index 2ba78a24..608857c6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,17 +25,14 @@ services: indexer-scraper: build: context: . - target: development container_name: indexer_service volumes: - - .:/usr/src/app + # - .:/usr/src/app - indexer-node-modules:/usr/src/app/node_modules - command: /bin/sh -c "/bin/sh ./docker/migrations.command.sh && /bin/sh ./docker/dev.command.sh" - working_dir: "/usr/src/app" + command: [sh, -c, "pnpm db:indexer-database:migrate:run && pnpm start:indexer"] env_file: - .env environment: - APP: indexer INDEXER_REDIS_HOST: redis DATABASE_HOST: postgres depends_on: @@ -46,19 +43,16 @@ services: indexer-api: build: context: . - target: development container_name: indexer_api - working_dir: "/usr/src/app" volumes: - - .:/usr/src/app + # - .:/usr/src/app - indexer-api-node-modules:/usr/src/app/node_modules ports: - ${PORT}:${PORT} - command: ["/bin/sh", "./docker/dev.command.sh"] + command: pnpm start:indexer-api env_file: - .env environment: - APP: indexer-api INDEXER_REDIS_HOST: redis DATABASE_HOST: postgres depends_on: diff --git a/docker/dev.command.sh b/docker/dev.command.sh deleted file mode 100755 index 206ba235..00000000 --- a/docker/dev.command.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -pnpm --filter @repo/node-app start diff --git a/docker/migrations.command.sh b/docker/migrations.command.sh deleted file mode 100755 index b64f2ddb..00000000 --- a/docker/migrations.command.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -# We need to run the migrations files located in the `packages/indexer-database` package -# We need to do the following: -# 1. Change directory to `packages/indexer-database` -# 2. Run the migration files using the `db:migration:run` script -# Note: this operation is idempotent, so it can be run multiple times without any issues -cd ../packages/indexer-database -npm run db:migration:run diff --git a/docker/prod.command.sh b/docker/prod.command.sh deleted file mode 100755 index 8f18b09a..00000000 --- a/docker/prod.command.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/bash - -# This should be loaded in the apps/node directory -node dist/app.js diff --git a/package.json b/package.json index 8279f32c..71258cd6 100644 --- a/package.json +++ b/package.json @@ -8,14 +8,16 @@ "check": "turbo check", "test": "turbo test", "start:indexer": "APP=indexer pnpm --filter @repo/node-app start", + "start:indexer:prod": "APP=indexer pnpm --filter @repo/node-app start:prod", "start:indexer-api": "APP=indexer-api pnpm --filter @repo/node-app start", + "start:indexer-api:prod": "APP=indexer-api pnpm --filter @repo/node-app start:prod", "start:template": "APP=template pnpm --filter @repo/node-app start", "start:persistence-example": "APP=persistence-example pnpm --filter @repo/node-app start", "prepare": "husky", "db:persistence-example:migrate:generate": "cd packages/persistence-example; pnpm db:migration:generate $MIGRATION_PATH", "db:persistence-example:migrate:run": "cd packages/persistence-example; pnpm db:migration:run", "db:indexer-database:migrate:generate": "cd packages/indexer-database; pnpm db:migration:generate $MIGRATION_PATH", - "db:indexer-database:migrate:run": "cd packages/indexer-database; pnpm db:migration:run", + "db:indexer-database:migrate:run": "pnpm --filter @repo/indexer-database db:migration:run", "dev-env:up": "docker compose up -d --build", "dev-env:down": "docker compose down" },