From 7c36d0df30dbf1af0f8158785d2b70387d134ef1 Mon Sep 17 00:00:00 2001 From: kirito Date: Sat, 11 Jul 2026 19:40:22 +0530 Subject: [PATCH] feat: add Docker configuration files for development and production environments --- .dockerignore | 34 ++++++++++++++++++++++++++++++++++ compose.dev.yml | 22 ++++++++++++++++++++++ compose.prod.yml | 15 +++++++++++++++ web/Dockerfile | 26 ++++++++++++++++++++++++++ web/Dockerfile.dev | 22 ++++++++++++++++++++++ web/next.config.ts | 1 + 6 files changed, 120 insertions(+) create mode 100644 .dockerignore create mode 100644 compose.dev.yml create mode 100644 compose.prod.yml create mode 100644 web/Dockerfile create mode 100644 web/Dockerfile.dev diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..dc157ff --- /dev/null +++ b/.dockerignore @@ -0,0 +1,34 @@ +# Include any files or directories that you don't want to be copied to your +# container here (e.g., local build artifacts, temporary files, etc.). +# +# For more help, visit the .dockerignore file reference guide at +# https://docs.docker.com/go/build-context-dockerignore/ + +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/.next +**/.cache +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/charts +**/docker-compose* +**/compose.y*ml +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +**/build +**/dist +LICENSE +README.md diff --git a/compose.dev.yml b/compose.dev.yml new file mode 100644 index 0000000..6593e0b --- /dev/null +++ b/compose.dev.yml @@ -0,0 +1,22 @@ +services: + web: + build: + context: . + dockerfile: web/Dockerfile.dev + + container_name: next-dev + + ports: + - '3000:3000' + + volumes: + - .:/app + - /app/web/node_modules + - /app/node_modules + + working_dir: /app/web + + environment: + NODE_ENV: development + + command: pnpm dev diff --git a/compose.prod.yml b/compose.prod.yml new file mode 100644 index 0000000..2ef985e --- /dev/null +++ b/compose.prod.yml @@ -0,0 +1,15 @@ +services: + web: + build: + context: . + dockerfile: web/Dockerfile + + container_name: next-prod + + ports: + - '3000:3000' + + env_file: + - web/.env.production + + restart: unless-stopped diff --git a/web/Dockerfile b/web/Dockerfile new file mode 100644 index 0000000..80faaad --- /dev/null +++ b/web/Dockerfile @@ -0,0 +1,26 @@ +FROM node:22-alpine + +RUN apk add --no-cache libc6-compat + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" + +RUN corepack enable + +WORKDIR /app + +COPY package.json pnpm-lock.yaml ./pnpm-workspace.yaml ./ +COPY eslint.config.mjs ./ +Copy web ./web + +WORKDIR /app/web + +RUN pnpm install --frozen-lockfile + +ENV NODE_ENV=production + +RUN pnpm build + +EXPOSE 3000 + +CMD ["pnpm", "start"] \ No newline at end of file diff --git a/web/Dockerfile.dev b/web/Dockerfile.dev new file mode 100644 index 0000000..b48c4f3 --- /dev/null +++ b/web/Dockerfile.dev @@ -0,0 +1,22 @@ +FROM node:22-alpine + +RUN apk add --no-cache libc6-compat + +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" + +RUN corepack enable + +WORKDIR /app + +COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./ +COPY eslint.config.mjs ./ +COPY web ./web + +WORKDIR /app/web + +RUN pnpm install + +EXPOSE 3000 + +CMD ["pnpm", "dev"] \ No newline at end of file diff --git a/web/next.config.ts b/web/next.config.ts index 358d251..fdd26cb 100644 --- a/web/next.config.ts +++ b/web/next.config.ts @@ -9,6 +9,7 @@ const nextConfig: NextConfig = { }, }, }, + output: 'standalone', }; export default nextConfig;