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: