# infra/docker-compose.yml version: '3.8' services: # Node 1: Primary Node (Bootstrap) cockroach-1: image: cockroachdb/cockroach:latest container_name: cockroach-1 command: start --insecure --host=cockroach-1 --listen-addr=cockroach-1:26257 --advertise-addr=cockroach-1:26257 --join=cockroach-1:26257,cockroach-2:26257,cockroach-3:26257 restart: always volumes: - cockroach1:/cockroach/data ports: - "26257:26257" # Default SQL Port - "8080:8080" # Web UI Port (สำหรับดูสถานะ Cluster) # Node 2: Joining Node cockroach-2: image: cockroachdb/cockroach:latest container_name: cockroach-2 command: start --insecure --host=cockroach-2 --listen-addr=cockroach-2:26257 --advertise-addr=cockroach-2:26257 --join=cockroach-1:26257,cockroach-2:26257,cockroach-3:26257 restart: always volumes: - cockroach2:/cockroach/data # Node 3: Joining Node cockroach-3: image: cockroachdb/cockroach:latest container_name: cockroach-3 command: start --insecure --host=cockroach-3 --listen-addr=cockroach-3:26257 --advertise-addr=cockroach-3:26257 --join=cockroach-1:26257,cockroach-2:26257,cockroach-3:26257 restart: always volumes: - cockroach3:/cockroach/data # 4. Init Cluster (ตั้งค่าครั้งแรก) init-cluster: image: cockroachdb/cockroach:latest container_name: init-cluster command: init --insecure --host=cockroach-1:26257 depends_on: - cockroach-1 - cockroach-2 - cockroach-3 # ตั้งค่าให้ Container ตายหลังจากรัน init เสร็จ (ไม่รันซ้ำ) restart: "no" # Backend/API (DRF) backend: build: context: ../backend dockerfile: Dockerfile volumes: - ../backend:/app ports: - "8000:8000" # เปลี่ยนให้พึ่งพา Node ฐานข้อมูลโดยตรง (เพราะ entrypoint script จะจัดการการรอ) depends_on: - cockroach-1 - cockroach-2 - cockroach-3 environment: DB_HOST: cockroach-1 DB_PORT: 26257 DB_NAME: my_db DB_USER: root DB_PASSWORD: '' volumes: cockroach1: cockroach2: cockroach3: