name: rentaldrivego-dev services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_DB: rentaldrivego POSTGRES_USER: postgres POSTGRES_PASSWORD: password healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres -d rentaldrivego"] interval: 5s timeout: 5s retries: 10 ports: - "5432:5432" volumes: - postgres_dev_data:/var/lib/postgresql/data redis: image: redis:7-alpine restart: unless-stopped ports: - "6379:6379" volumes: - redis_dev_data:/data pgadmin: image: dpage/pgadmin4:9 restart: unless-stopped depends_on: postgres: condition: service_healthy environment: PGADMIN_DEFAULT_EMAIL: admin@rentaldrivego.dev PGADMIN_DEFAULT_PASSWORD: admin PGADMIN_CONFIG_ENHANCED_COOKIE_PROTECTION: "False" ports: - "5050:80" volumes: - pgadmin_dev_data:/var/lib/pgadmin - ./docker/pgadmin/servers.json:/pgadmin4/servers.json:ro profiles: ["tools"] pgmanage: image: cmdpromptinc/pgmanage-enterprise:latest restart: unless-stopped user: "0:0" depends_on: postgres: condition: service_healthy environment: PGMANAGE_LISTEN_PORT: "8000" ports: - "8000:8000" volumes: - pgmanage_dev_data:/appdata profiles: ["tools"] migrate: build: context: . dockerfile: Dockerfile.dev depends_on: postgres: condition: service_healthy env_file: - .env.docker.dev environment: FILE_STORAGE_ROOT: /var/lib/rentaldrivego/storage LEGACY_STORAGE_ROOT: /app/apps/api/src/lib/storage command: ["sh", "/app/docker/scripts/dev-bootstrap.sh"] volumes: - .:/app - app_node_modules:/app/node_modules - postgres_bootstrap_state:/state - api_uploads_dev:/var/lib/rentaldrivego/storage api: build: context: . dockerfile: Dockerfile.dev depends_on: postgres: condition: service_healthy redis: condition: service_started migrate: condition: service_completed_successfully env_file: - .env.docker.dev environment: FILE_STORAGE_ROOT: /var/lib/rentaldrivego/storage command: ["sh", "-c", "npm run build --workspace @rentaldrivego/types && cd /app/apps/api && exec /app/node_modules/.bin/ts-node-dev --respawn --transpile-only --ignore-watch ../../packages/types/dist src/index.ts"] ports: - "4000:4000" volumes: - .:/app - app_node_modules:/app/node_modules - api_uploads_dev:/var/lib/rentaldrivego/storage restart: unless-stopped profiles: ["api", "full"] marketplace: build: context: . dockerfile: Dockerfile.dev depends_on: - api env_file: - .env.docker.dev command: [ "sh", "-c", "npm run build --workspace @rentaldrivego/types && cd /app/apps/marketplace && mkdir -p .next && find .next -mindepth 1 -exec rm -rf {} + && exec env PATH=/app/docker/scripts:$PATH /app/node_modules/.bin/next dev -H 0.0.0.0 -p 3000", ] ports: - "3000:3000" volumes: - .:/app - app_node_modules:/app/node_modules - marketplace_next:/app/apps/marketplace/.next restart: unless-stopped profiles: ["marketplace", "full"] dashboard: build: context: . dockerfile: Dockerfile.dev depends_on: - api env_file: - .env.docker.dev command: [ "sh", "-c", "npm run build --workspace @rentaldrivego/types && cd /app/apps/dashboard && mkdir -p .next && find .next -mindepth 1 -exec rm -rf {} + && exec env PATH=/app/docker/scripts:$PATH /app/node_modules/.bin/next dev -H 0.0.0.0 -p 3001", ] ports: - "3001:3001" volumes: - .:/app - app_node_modules:/app/node_modules - dashboard_next:/app/apps/dashboard/.next restart: unless-stopped profiles: ["dashboard", "full"] admin: build: context: . dockerfile: Dockerfile.dev depends_on: - api env_file: - .env.docker.dev environment: ADMIN_ASSET_PREFIX: "http://localhost:3002" command: [ "sh", "-c", "npm run build --workspace @rentaldrivego/types && cd /app/apps/admin && mkdir -p .next && find .next -mindepth 1 -exec rm -rf {} + && exec env PATH=/app/docker/scripts:$PATH /app/node_modules/.bin/next dev -H 0.0.0.0 -p 3002", ] ports: - "3002:3002" volumes: - .:/app - app_node_modules:/app/node_modules - admin_next:/app/apps/admin/.next restart: unless-stopped profiles: ["admin", "full"] volumes: postgres_dev_data: redis_dev_data: pgadmin_dev_data: pgmanage_dev_data: app_node_modules: postgres_bootstrap_state: api_uploads_dev: marketplace_next: dashboard_next: admin_next: