version: '3.8' networks: gitea-net: driver: bridge volumes: mysql_data: gitea_data: jenkins_data: mysql_oms_data: mysql_triple_data: services: # ────────────────────────────────────────── # MySQL 8.0 — Gitea/Jenkins용 # ────────────────────────────────────────── mysql: image: mysql:8.0 container_name: mysql restart: always networks: - gitea-net environment: MYSQL_ROOT_PASSWORD: root1234! MYSQL_DATABASE: gitea MYSQL_CHARACTER_SET_SERVER: utf8mb4 MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-proot1234!"] interval: 10s timeout: 5s retries: 10 # ────────────────────────────────────────── # MySQL 8.0 — omsDB # ────────────────────────────────────────── mysql-oms: image: mysql:8.0 container_name: mysql-oms restart: always networks: - gitea-net ports: - "3308:3306" environment: TZ: Asia/Seoul MYSQL_ROOT_PASSWORD: root1234 MYSQL_DATABASE: omsDB MYSQL_CHARACTER_SET_SERVER: utf8mb4 MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci volumes: - mysql_oms_data:/var/lib/mysql - ./innodb8.cnf:/etc/mysql/conf.d/innodb.cnf:ro healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-proot1234"] interval: 10s timeout: 5s retries: 10 # ────────────────────────────────────────── # MySQL 8.0 — triple_db # ────────────────────────────────────────── mysql-triple: image: mysql:8.0 container_name: mysql-triple restart: always networks: - gitea-net ports: - "3309:3306" environment: TZ: Asia/Seoul MYSQL_ROOT_PASSWORD: root1234 MYSQL_DATABASE: triple_db MYSQL_CHARACTER_SET_SERVER: utf8mb4 MYSQL_COLLATION_SERVER: utf8mb4_unicode_ci volumes: - mysql_triple_data:/var/lib/mysql - ./innodb8.cnf:/etc/mysql/conf.d/innodb.cnf:ro healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-proot1234"] interval: 10s timeout: 5s retries: 10 # ────────────────────────────────────────── # Gitea # ────────────────────────────────────────── gitea: image: gitea/gitea:latest container_name: gitea restart: always networks: - gitea-net depends_on: mysql: condition: service_healthy environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=mysql - GITEA__database__HOST=mysql:3306 - GITEA__database__NAME=gitea - GITEA__database__USER=root - GITEA__database__PASSWD=root1234! - GITEA__server__DOMAIN=git.gong-dev.com - GITEA__server__SSH_DOMAIN=git.gong-dev.com - GITEA__server__ROOT_URL=https://git.gong-dev.com/ - GITEA__server__HTTP_PORT=3000 volumes: - gitea_data:/data expose: - "3000" # ────────────────────────────────────────── # Jenkins # ────────────────────────────────────────── jenkins: image: jenkins/jenkins:lts container_name: jenkins user: root restart: always networks: - gitea-net volumes: - jenkins_data:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/usr/bin/docker - /opt/gitea-stack:/opt/gitea-stack - /opt/docker-cli-plugins:/usr/local/lib/docker/cli-plugins expose: - "8080" # ────────────────────────────────────────── # Nginx (reverse proxy) # ────────────────────────────────────────── nginx: image: nginx:alpine container_name: nginx restart: always networks: - gitea-net depends_on: - gitea - jenkins ports: - "80:80" - "443:443" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro - /etc/ssl/origin-ca:/etc/ssl/origin-ca:ro - /etc/ssl/acme:/etc/ssl/acme:ro # ────────────────────────────────────────── # pkcasino01 — 카지노 프론트엔드 # ────────────────────────────────────────── pkcasino01: image: pkcasino01:latest container_name: pkcasino01 restart: always networks: - gitea-net expose: - "80" # ────────────────────────────────────────── # agent_oms — 에이전트 어드민 프론트엔드 # ────────────────────────────────────────── agent-oms: image: agent_oms:latest container_name: agent-oms restart: always networks: - gitea-net expose: - "80" # ────────────────────────────────────────── # first_vendor_panel — 벤더 패널 프론트엔드 # ────────────────────────────────────────── first-vendor-panel: image: first_vendor_panel:latest container_name: first-vendor-panel restart: always networks: - gitea-net expose: - "80" # ────────────────────────────────────────── # oms_api — OMS 백엔드 API # ────────────────────────────────────────── oms-api: image: oms_api:latest container_name: oms-api restart: always networks: - gitea-net depends_on: mysql-oms: condition: service_healthy mysql-triple: condition: service_healthy volumes: - /home/log/triple:/home/log/triple expose: - "8080" environment: - SPRING_DATASOURCE1_JDBC_URL=jdbc:mysql://mysql-oms:3306/omsDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8&allowMultiQueries=true - SPRING_DATASOURCE2_JDBC_URL=jdbc:mysql://mysql-oms:3306/omsDB?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8&allowMultiQueries=true - SPRING_DATASOURCE3_JDBC_URL=jdbc:mysql://mysql-triple:3306/triple_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 - SPRING_DATASOURCE1_USERNAME=root - SPRING_DATASOURCE1_PASSWORD=root1234 - SPRING_DATASOURCE2_USERNAME=root - SPRING_DATASOURCE2_PASSWORD=root1234 - SPRING_DATASOURCE3_USERNAME=root - SPRING_DATASOURCE3_PASSWORD=root1234 # ────────────────────────────────────────── # first_vendor_api — Triple 벤더 API # ────────────────────────────────────────── first-vendor-api: image: first_vendor_api:latest container_name: first-vendor-api restart: always networks: - gitea-net depends_on: mysql-triple: condition: service_healthy volumes: - /home/log/triple:/home/log/triple expose: - "8080" environment: - SPRING_DATASOURCE1_JDBC_URL=jdbc:mysql://mysql-triple:3306/triple_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 - SPRING_DATASOURCE2_JDBC_URL=jdbc:mysql://mysql-triple:3306/triple_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 - SPRING_DATASOURCE1_USERNAME=root - SPRING_DATASOURCE1_PASSWORD=root1234 - SPRING_DATASOURCE2_USERNAME=root - SPRING_DATASOURCE2_PASSWORD=root1234 - SPRING_AUTOCONFIGURE_EXCLUDE=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration # ────────────────────────────────────────── # first_vendor_batch — Triple 배치 서버 # ────────────────────────────────────────── first-vendor-batch: image: first_vendor_batch:latest container_name: first-vendor-batch restart: always networks: - gitea-net depends_on: mysql-triple: condition: service_healthy volumes: - /home/log/triple:/home/log/triple expose: - "8080" environment: - SPRING_DATASOURCE1_JDBC_URL=jdbc:mysql://mysql-triple:3306/triple_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 - SPRING_DATASOURCE2_JDBC_URL=jdbc:mysql://mysql-triple:3306/triple_db?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&autoReconnect=true&useEncoding=true&characterEncoding=utf-8 - SPRING_DATASOURCE1_USERNAME=root - SPRING_DATASOURCE1_PASSWORD=root1234 - SPRING_DATASOURCE2_USERNAME=root - SPRING_DATASOURCE2_PASSWORD=root1234 - SPRING_AUTOCONFIGURE_EXCLUDE=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration,org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration