From a2a5eee49e0a5fbfac44535babe81b6409d65052 Mon Sep 17 00:00:00 2001 From: Dominik Stahl Date: Wed, 21 May 2025 14:29:00 +0200 Subject: [PATCH] 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 cf0b1fa..bbd8516 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",