From 9bf7a340d62a700fab6818ae8f1409bacb057b92 Mon Sep 17 00:00:00 2001 From: Dominik Stahl Date: Wed, 21 May 2025 14:29:00 +0200 Subject: [PATCH 1/4] chore: add development docker environment adds a docker environment for development. can be started using: `docker compose -f docker-compose.dev.yml up --watch --build` --- Dockerfile.dev | 17 +++++++++++++++++ docker-compose.dev.yml | 27 +++++++++++++++++++++++++++ entrypoint.dev.sh | 10 ++++++++++ 3 files changed, 54 insertions(+) create mode 100644 Dockerfile.dev create mode 100644 docker-compose.dev.yml create mode 100644 entrypoint.dev.sh diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..e95e39a --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,17 @@ +FROM node:22-alpine@sha256:152270cd4bd094d216a84cbc3c5eb1791afb05af00b811e2f0f04bdc6c473602 + +WORKDIR /app + +RUN corepack enable +COPY package.json yarn.lock .yarnrc.yml ./ +RUN yarn install --frozen-lockfile + +COPY . . + +ENV NODE_ENV=development +ENV NEXT_TELEMETRY_DISABLED=1 + +EXPOSE 3000 +ENV HOSTNAME="0.0.0.0" + +CMD ["/bin/ash", "entrypoint.dev.sh"] \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..3aa4174 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,27 @@ +services: + app: + build: + context: . + dockerfile: Dockerfile.dev + ports: + - '3000:3000' + environment: + - AUTH_SECRET=secret + - AUTH_URL=http://localhost:3000 + - DATABASE_URL=file:/data/db.sqlite + env_file: + - .env.local + volumes: + - ./data:/data + develop: + watch: + - action: sync + path: ./src + target: /app/src + ignore: + - node_modules/ + - action: rebuild + path: package.json + - action: sync+restart + path: prisma + target: /app/prisma diff --git a/entrypoint.dev.sh b/entrypoint.dev.sh new file mode 100644 index 0000000..ec103bf --- /dev/null +++ b/entrypoint.dev.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo "Running start script with user $(whoami) and NODE_ENV $NODE_ENV" +if [ -d "prisma" ]; then + echo "Syncing Prisma database" + yarn prisma:generate + yarn prisma:db:push +fi + +exec yarn dev From 3728e977da762ab6ff2587258623f377d76054f2 Mon Sep 17 00:00:00 2001 From: Dominik Stahl Date: Wed, 21 May 2025 14:32:20 +0200 Subject: [PATCH 2/4] docs: add note about docker development environment --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 1fbb7bf..af9f50f 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,14 @@ This project is built with a modern tech stack: password: password ``` +**Docker development environment:** + +- The docker development environment can be started with the following command: + +```bash +docker compose -f docker-compose.dev.yml up --watch --build +``` + **Self-Hosting with Docker (Planned):** - A Docker image and `docker-compose.yml` file will be provided in the future to allow for easy self-hosting of the MeetUP application. This setup will also include database services. Instructions will be updated here once available. From ddc0cc707e734f86c94fd31451b63486a79bdc35 Mon Sep 17 00:00:00 2001 From: Dominik Stahl Date: Wed, 21 May 2025 14:29:00 +0200 Subject: [PATCH 3/4] chore: add development docker environment adds a docker environment for development. can be started using: `docker compose -f docker-compose.dev.yml up --watch --build` --- Dockerfile.dev | 17 +++++++++++++++++ docker-compose.dev.yml | 27 +++++++++++++++++++++++++++ entrypoint.dev.sh | 10 ++++++++++ package.json | 3 ++- 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 Dockerfile.dev create mode 100644 docker-compose.dev.yml create mode 100644 entrypoint.dev.sh diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 0000000..e95e39a --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,17 @@ +FROM node:22-alpine@sha256:152270cd4bd094d216a84cbc3c5eb1791afb05af00b811e2f0f04bdc6c473602 + +WORKDIR /app + +RUN corepack enable +COPY package.json yarn.lock .yarnrc.yml ./ +RUN yarn install --frozen-lockfile + +COPY . . + +ENV NODE_ENV=development +ENV NEXT_TELEMETRY_DISABLED=1 + +EXPOSE 3000 +ENV HOSTNAME="0.0.0.0" + +CMD ["/bin/ash", "entrypoint.dev.sh"] \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..3aa4174 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,27 @@ +services: + app: + build: + context: . + dockerfile: Dockerfile.dev + ports: + - '3000:3000' + environment: + - AUTH_SECRET=secret + - AUTH_URL=http://localhost:3000 + - DATABASE_URL=file:/data/db.sqlite + env_file: + - .env.local + volumes: + - ./data:/data + develop: + watch: + - action: sync + path: ./src + target: /app/src + ignore: + - node_modules/ + - action: rebuild + path: package.json + - action: sync+restart + path: prisma + target: /app/prisma diff --git a/entrypoint.dev.sh b/entrypoint.dev.sh new file mode 100644 index 0000000..ec103bf --- /dev/null +++ b/entrypoint.dev.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo "Running start script with user $(whoami) and NODE_ENV $NODE_ENV" +if [ -d "prisma" ]; then + echo "Syncing Prisma database" + yarn prisma:generate + yarn prisma:db:push +fi + +exec yarn dev diff --git a/package.json b/package.json index 37849ca..e50f7c9 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,8 @@ "prisma:generate": "dotenv -e .env.local -- prisma generate", "prisma:studio": "dotenv -e .env.local -- prisma studio", "prisma:db:push": "dotenv -e .env.local -- prisma db push", - "prisma:migrate:reset": "dotenv -e .env.local -- prisma migrate reset" + "prisma:migrate:reset": "dotenv -e .env.local -- prisma migrate reset", + "dev_container": "docker compose -f docker-compose.dev.yml up --watch --build" }, "dependencies": { "@auth/prisma-adapter": "^2.9.1", From cd01d64a82d2b7df7d2355b253431572896ea6ee Mon Sep 17 00:00:00 2001 From: Dominik Stahl Date: Wed, 21 May 2025 14:32:20 +0200 Subject: [PATCH 4/4] docs: add note about docker development environment --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 1fbb7bf..bdba06f 100644 --- a/README.md +++ b/README.md @@ -121,6 +121,12 @@ This project is built with a modern tech stack: password: password ``` +- The docker development environment can be started with the following command: + +```bash +yarn dev_container +``` + **Self-Hosting with Docker (Planned):** - A Docker image and `docker-compose.yml` file will be provided in the future to allow for easy self-hosting of the MeetUP application. This setup will also include database services. Instructions will be updated here once available.