monorepo-starter-template/infra/docker-compose.yml

71 lines
2.3 KiB
YAML

# 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: