services: postgres: image: postgres:16-alpine container_name: telemedicine-postgres restart: unless-stopped environment: POSTGRES_DB: telemedicine POSTGRES_USER: postgres POSTGRES_PASSWORD: password ports: - "5432:5432" volumes: - ./postgres-data:/var/lib/postgresql/data networks: - telemedicine-network app: build: context: . dockerfile: Dockerfile container_name: telemedicine-app ports: - "8080:8080" - "18080:8080" depends_on: - postgres - turn environment: SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/telemedicine SPRING_DATASOURCE_USERNAME: postgres SPRING_DATASOURCE_PASSWORD: password JWT_SECRET: ${JWT_SECRET} JWT_EXPIRATION: 86400 SPRING_MAIL_HOST: smtp.gmail.com SPRING_MAIL_PORT: 587 SPRING_MAIL_USERNAME: ${MAIL_USERNAME} SPRING_MAIL_PASSWORD: ${MAIL_PASSWORD} GEMINI_API_KEY: ${GEMINI_API_KEY:-dummy-key} networks: - telemedicine-network turn: image: coturn/coturn:latest container_name: telemedicine-turn restart: unless-stopped ports: - "3478:3478/udp" - "3478:3478/tcp" - "49152-49251:49152-49251/udp" environment: TURN_ENABLED: "true" TURN_USERNAME: "telemedicine" TURN_PASSWORD: ${TURN_PASSWORD:-changeme} TURN_REALM: "localdomain" NO_AUTH_RELAY: "false" LISTENING_IP: "0.0.0.0" MIN_PORT: "49152" MAX_PORT: "49251" VERBOSE: "true" volumes: - ./turn-config:/etc/turnserver networks: - telemedicine-network volumes: postgres-data: driver: local networks: telemedicine-network: driver: bridge