102 lines
2.5 KiB
YAML
102 lines
2.5 KiB
YAML
networks:
|
|
apisix_net:
|
|
driver: bridge
|
|
|
|
services:
|
|
# 1. Cơ sở dữ liệu cấu hình cho APISIX
|
|
etcd:
|
|
image: bitnamilegacy/etcd:3.5.11
|
|
container_name: apisix-etcd
|
|
restart: always
|
|
volumes:
|
|
- etcd_data:/bitnami/etcd
|
|
environment:
|
|
ETCD_ENABLE_V2: "true"
|
|
ALLOW_NONE_AUTHENTICATION: "yes"
|
|
ETCD_ADVERTISE_CLIENT_URLS: "http://etcd:2379"
|
|
ETCD_LISTEN_CLIENT_URLS: "http://0.0.0.0:2379"
|
|
networks:
|
|
- apisix_net
|
|
|
|
# 2. Apache APISIX Gateway
|
|
apisix:
|
|
image: apache/apisix:3.16.0-debian
|
|
container_name: apisix-gateway
|
|
user: "root"
|
|
restart: always
|
|
volumes:
|
|
- ./apisix_conf/config.yaml:/usr/local/apisix/conf/config.yaml
|
|
depends_on:
|
|
- etcd
|
|
networks:
|
|
- apisix_net
|
|
ports:
|
|
- "9080:9080" # HTTP Traffic
|
|
- "9443:9443" # HTTPS Traffic
|
|
- "9180:9180" # Admin API
|
|
|
|
# 3. APISIX Dashboard (Đổi sang cổng 9090)
|
|
apisix-dashboard:
|
|
image: apache/apisix-dashboard:3.0.1-alpine
|
|
container_name: apisix-dashboard
|
|
restart: always
|
|
volumes:
|
|
- ./apisix_conf/dashboard_conf.yaml:/usr/local/apisix-dashboard/conf/conf.yaml:ro
|
|
- ./apisix_conf/schema.json:/usr/local/apisix-dashboard/conf/schema.json:ro
|
|
depends_on:
|
|
- etcd
|
|
networks:
|
|
- apisix_net
|
|
ports:
|
|
- "9090:9090"
|
|
|
|
# 4. Grafana Loki (Đổi sang cổng 9100)
|
|
loki:
|
|
image: grafana/loki:3.0.0
|
|
container_name: apisix-loki
|
|
restart: always
|
|
volumes:
|
|
- loki_data:/tmp/loki
|
|
command: -config.file=/etc/loki/local-config.yaml
|
|
networks:
|
|
- apisix_net
|
|
|
|
# 5. Promtail (Thu thập log gửi sang Loki)
|
|
promtail:
|
|
image: grafana/promtail:3.0.0
|
|
container_name: apisix-promtail
|
|
restart: always
|
|
volumes:
|
|
- ./promtail_conf/promtail-config.yaml:/etc/promtail/config.yml:ro
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
command: -config.file=/etc/promtail/config.yml
|
|
depends_on:
|
|
- loki
|
|
networks:
|
|
- apisix_net
|
|
|
|
# 6. Grafana (Đổi sang cổng 9300)
|
|
grafana:
|
|
image: grafana/grafana:11.0.0
|
|
container_name: apisix-grafana
|
|
restart: always
|
|
environment:
|
|
- GF_SECURITY_ALLOW_EMBEDDING=true
|
|
ports:
|
|
- "9300:3000"
|
|
volumes:
|
|
- grafana_data:/var/lib/grafana
|
|
- ./grafana_conf/provisioning:/etc/grafana/provisioning:ro
|
|
depends_on:
|
|
- loki
|
|
networks:
|
|
- apisix_net
|
|
|
|
volumes:
|
|
etcd_data:
|
|
driver: local
|
|
loki_data:
|
|
driver: local
|
|
grafana_data:
|
|
driver: local
|