From 75e01018a52a1c4bb202b98f9d75d71c98409aa6 Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 14 Jul 2025 18:24:37 -0700 Subject: [PATCH] Add docker file for dev --- Dockerfile.dev | 14 +++++++++++ docker-compose.dev.yml | 19 --------------- docker-compose.pgr.yml | 55 ++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 32 ++++++++++++++++++++++++ 4 files changed, 101 insertions(+), 19 deletions(-) create mode 100644 Dockerfile.dev delete mode 100644 docker-compose.dev.yml create mode 100644 docker-compose.pgr.yml create mode 100644 docker-compose.yml diff --git a/Dockerfile.dev b/Dockerfile.dev new file mode 100644 index 00000000..141cfd10 --- /dev/null +++ b/Dockerfile.dev @@ -0,0 +1,14 @@ +FROM node:20-alpine + +WORKDIR /app + +COPY package*.json ./ + +# Install dependencies +RUN npm ci + +# Copy source code +COPY . . + +# Use tsx watch for development with hot reload +CMD ["npm", "run", "dev"] diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml deleted file mode 100644 index 8ca8fac0..00000000 --- a/docker-compose.dev.yml +++ /dev/null @@ -1,19 +0,0 @@ -services: - # PostgreSQL Service - db: - image: postgres:17 # Use the PostgreSQL 17 image - container_name: dev_postgres # Name your PostgreSQL container - environment: - POSTGRES_DB: postgres # Default database name - POSTGRES_USER: postgres # Default user - POSTGRES_PASSWORD: password # Default password (change for production!) - ports: - - "5432:5432" # Map host port 5432 to container port 5432 - restart: no - - redis: - image: redis:latest # Use the latest Redis image - container_name: dev_redis # Name your Redis container - ports: - - "6379:6379" # Map host port 6379 to container port 6379 - restart: no diff --git a/docker-compose.pgr.yml b/docker-compose.pgr.yml new file mode 100644 index 00000000..85ab2d82 --- /dev/null +++ b/docker-compose.pgr.yml @@ -0,0 +1,55 @@ +services: + # PostgreSQL Service + db: + image: postgres:17 # Use the PostgreSQL 17 image + container_name: dev_postgres # Name your PostgreSQL container + environment: + POSTGRES_DB: postgres # Default database name + POSTGRES_USER: postgres # Default user + POSTGRES_PASSWORD: password # Default password (change for production!) + ports: + - "5432:5432" # Map host port 5432 to container port 5432 + restart: no + + redis: + image: redis:latest # Use the latest Redis image + container_name: dev_redis # Name your Redis container + ports: + - "6379:6379" # Map host port 6379 to container port 6379 + restart: no + + # Development application service + app: + build: + context: . + dockerfile: Dockerfile.dev + container_name: dev_pangolin + ports: + - "3000:3000" + environment: + - NODE_ENV=development + - ENVIRONMENT=dev + - DB_TYPE=pg + - DATABASE_URL=postgresql://postgres:password@db:5432/postgres + - REDIS_URL=redis://redis:6379 + volumes: + # Mount source code for hot reload + - ./src:/app/src + - ./server:/app/server + - ./public:/app/public + - ./messages:/app/messages + - ./components.json:/app/components.json + - ./next.config.mjs:/app/next.config.mjs + - ./tsconfig.json:/app/tsconfig.json + - ./tailwind.config.js:/app/tailwind.config.js + - ./postcss.config.mjs:/app/postcss.config.mjs + - ./eslint.config.js:/app/eslint.config.js + # Use named volume for node_modules to avoid platform-specific issues + - node_modules:/app/node_modules + depends_on: + - db + - redis + restart: no + +volumes: + node_modules: diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..dc8592e5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,32 @@ +services: + # Development application service + app: + build: + context: . + dockerfile: Dockerfile.dev + container_name: dev_pangolin + ports: + - "3000:3000" + - "3001:3001" + - "3002:3002" + environment: + - NODE_ENV=development + - ENVIRONMENT=dev + - DB_TYPE=pg + volumes: + # Mount source code for hot reload + - ./src:/app/src + - ./server:/app/server + - ./public:/app/public + - ./messages:/app/messages + - ./components.json:/app/components.json + - ./next.config.mjs:/app/next.config.mjs + - ./tsconfig.json:/app/tsconfig.json + - ./tailwind.config.js:/app/tailwind.config.js + - ./postcss.config.mjs:/app/postcss.config.mjs + - ./eslint.config.js:/app/eslint.config.js + - ./config:/app/config + restart: no + +volumes: + node_modules: