version: '3.8' services: app: build: context: . dockerfile: Dockerfile ports: - "3000:3000" environment: - DATABASE_URL=postgresql://postgres:postgres@db:5432/construccion_db?schema=public - NEXTAUTH_URL=http://localhost:3000 - NEXTAUTH_SECRET=${NEXTAUTH_SECRET:-desarrollo-secret-key-cambiar-en-produccion} - NODE_ENV=production depends_on: db: condition: service_healthy restart: unless-stopped networks: - construccion-network db: image: postgres:16-alpine environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=construccion_db volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped networks: - construccion-network # Database migrations runner migrate: build: context: . dockerfile: Dockerfile command: npx prisma migrate deploy environment: - DATABASE_URL=postgresql://postgres:postgres@db:5432/construccion_db?schema=public depends_on: db: condition: service_healthy networks: - construccion-network # Optional: pgAdmin for database management pgadmin: image: dpage/pgadmin4:latest environment: - PGADMIN_DEFAULT_EMAIL=admin@admin.com - PGADMIN_DEFAULT_PASSWORD=admin ports: - "5050:80" depends_on: - db restart: unless-stopped networks: - construccion-network profiles: - admin volumes: postgres_data: networks: construccion-network: driver: bridge