services: postgres: container_name: ms_pg_sql build: . environment: POSTGRES_USER: admin POSTGRES_PASSWORD: 123 PGDATA: /var/lib/postgresql/data POSTGRES_DB: employee_service volumes: - postgres:/var/lib/postgresql/data ports: - 5432:5432 networks: - microservice-net restart: unless-stopped pgadmin: container_name: ms_pgadmin image: dpage/pgadmin4 environment: PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin@pgadmin.org} PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin} PGADMIN_CONFIG_SERVER_MODE: 'False' volumes: - pgadmin:/var/lib/pgadmin ports: - 8180:80 networks: - microservice-net restart: unless-stopped employee-service: build: context: ./employee-service dockerfile: Dockerfile container_name: ms_employee_service environment: SPRING_DATASOURCE_URL: jdbc:postgresql://ms_pg_sql:5432/employee_service SPRING_DATASOURCE_USERNAME: admin SPRING_DATASOURCE_PASSWORD: 123 ports: - "8080:8080" depends_on: - postgres networks: - microservice-net restart: unless-stopped frontend: build: context: ./frontend dockerfile: Dockerfile container_name: ms_frontend ports: - "80" # ตรงนี้แม้จะดูเหมือนจะ conflict กับ web แต่ใช้ network ภายใน (ไม่ต้องแมพพอร์ต) depends_on: - employee-service networks: - microservice-net restart: unless-stopped web: build: context: ./nginx dockerfile: Dockerfile container_name: ms_web ports: - "80:80" # แมพพอร์ตให้ใช้งานจากนอก container ได้ depends_on: - frontend - employee-service networks: - microservice-net restart: unless-stopped networks: microservice-net: driver: bridge volumes: postgres: pgadmin: