Files
memegoat/docker-compose.yml
Mathis HERRIOT bd9dd140ab **feat(docker): add docker-compose for multi-service setup**
Introduce `docker-compose.yml` to orchestrate services for local development. Include configurations for PostgreSQL, Redis, MinIO (S3), Mailpit, backend, and frontend. Simplify setup with predefined environment variables, volumes, and dependencies, ensuring streamlined service management and integration.
2026-01-14 13:53:02 +01:00

107 lines
2.7 KiB
YAML

services:
db:
image: postgres:17-alpine
container_name: memegoat-db
restart: always
environment:
POSTGRES_USER: ${POSTGRES_USER:-app}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-app}
POSTGRES_DB: ${POSTGRES_DB:-app}
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
container_name: memegoat-redis
restart: always
ports:
- "6379:6379"
s3:
image: minio/minio:RELEASE.2025-04-08T15-41-24Z
container_name: memegoat-s3
restart: always
ports:
- "9000:9000"
- "9001:9001"
environment:
MINIO_ROOT_USER: ${S3_ACCESS_KEY:-minioadmin}
MINIO_ROOT_PASSWORD: ${S3_SECRET_KEY:-minioadmin}
command: server /data --console-address ":9001"
volumes:
- minio_data:/data
mail:
image: axllent/mailpit
container_name: memegoat-mail
restart: always
ports:
- "1025:1025" # smtp
- "8025:8025" # web ui
backend:
build:
context: .
dockerfile: backend/Dockerfile
target: base
container_name: memegoat-backend
command: pnpm run --filter @memegoat/backend start:dev
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
- /usr/src/app/backend/node_modules
ports:
- "3000:3000"
environment:
NODE_ENV: development
POSTGRES_HOST: db
POSTGRES_PORT: 5432
POSTGRES_DB: ${POSTGRES_DB:-app}
POSTGRES_USER: ${POSTGRES_USER:-app}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-app}
REDIS_HOST: redis
REDIS_PORT: 6379
S3_ENDPOINT: s3
S3_PORT: 9000
S3_ACCESS_KEY: ${S3_ACCESS_KEY:-minioadmin}
S3_SECRET_KEY: ${S3_SECRET_KEY:-minioadmin}
S3_BUCKET_NAME: ${S3_BUCKET_NAME:-memegoat}
MAIL_HOST: mail
MAIL_PORT: 1025
MAIL_USER: ""
MAIL_PASS: ""
MAIL_FROM: ${MAIL_FROM:-noreply@memegoat.local}
DOMAIN_NAME: ${DOMAIN_NAME:-localhost}
JWT_SECRET: ${JWT_SECRET:-super-secret-jwt-key-change-me-in-prod}
ENCRYPTION_KEY: ${ENCRYPTION_KEY:-01234567890123456789012345678901}
PGP_ENCRYPTION_KEY: ${PGP_ENCRYPTION_KEY:-super-secret-pgp-key}
SESSION_PASSWORD: ${SESSION_PASSWORD:-super-secret-session-password-32-chars}
depends_on:
- db
- redis
- s3
frontend:
build:
context: .
dockerfile: frontend/Dockerfile
target: base
container_name: memegoat-frontend
command: pnpm run --filter @memegoat/frontend dev
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
- /usr/src/app/frontend/node_modules
ports:
- "3001:3000"
environment:
NEXT_PUBLIC_API_URL: http://localhost:3000
depends_on:
- backend
volumes:
postgres_data:
minio_data: