241 lines
5.6 KiB
YAML
241 lines
5.6 KiB
YAML
networks:
|
|
loki:
|
|
|
|
volumes:
|
|
scoro_logs:
|
|
|
|
services:
|
|
back:
|
|
image: ghcr.io/chroma-case/back:main
|
|
ports:
|
|
- "3000:3000"
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
env_file:
|
|
- .env
|
|
volumes:
|
|
- ./assets:/assets
|
|
scorometer:
|
|
image: ghcr.io/chroma-case/scorometer:main
|
|
ports:
|
|
- "6543:6543"
|
|
volumes:
|
|
- scoro_logs:/logs
|
|
- ./assets:/assets
|
|
db:
|
|
container_name: db
|
|
image: postgres:alpine3.14
|
|
environment:
|
|
- POSTGRES_USER=${POSTGRES_USER}
|
|
- POSTGRES_PASSWORD=${POSTGRES_PASSWORDgrafana}
|
|
- POSTGRES_DB=${POSTGRES_DB}
|
|
ports:
|
|
- "5432:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
front:
|
|
image: ghcr.io/chroma-case/front:main
|
|
environment:
|
|
- API_URL=http://back:3000/
|
|
- SCOROMETER_URL=http://scorometer:6543/
|
|
- NGINX_PORT=80
|
|
ports:
|
|
- "80:80"
|
|
depends_on:
|
|
- "back"
|
|
env_file:
|
|
- .env
|
|
|
|
# logs setup
|
|
|
|
read:
|
|
image: grafana/loki:2.8.2
|
|
command: "-config.file=/etc/loki/config.yaml -target=read"
|
|
ports:
|
|
- 3101:3100
|
|
- 7946
|
|
- 9095
|
|
volumes:
|
|
- ./config/loki-config.yaml:/etc/loki/config.yaml
|
|
depends_on:
|
|
- minio
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3100/ready || exit 1" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks: &loki-dns
|
|
loki:
|
|
aliases:
|
|
- loki
|
|
|
|
write:
|
|
image: grafana/loki:2.8.2
|
|
command: "-config.file=/etc/loki/config.yaml -target=write"
|
|
ports:
|
|
- 3102:3100
|
|
- 7946
|
|
- 9095
|
|
volumes:
|
|
- ./config/loki-config.yaml:/etc/loki/config.yaml
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3100/ready || exit 1" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
depends_on:
|
|
- minio
|
|
networks:
|
|
<<: *loki-dns
|
|
|
|
promtail:
|
|
image: grafana/promtail:2.8.2
|
|
volumes:
|
|
- ./config/promtail-local-config.yaml:/etc/promtail/config.yaml:ro
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
command: -config.file=/etc/promtail/config.yaml
|
|
depends_on:
|
|
- gateway
|
|
networks:
|
|
- loki
|
|
|
|
minio:
|
|
image: minio/minio:RELEASE.2023-07-21T21-12-44Z
|
|
entrypoint:
|
|
- sh
|
|
- -euc
|
|
- |
|
|
mkdir -p /data/loki-data && \
|
|
mkdir -p /data/loki-ruler && \
|
|
minio server /data
|
|
environment:
|
|
- MINIO_ROOT_USER=loki
|
|
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
|
|
- MINIO_PROMETHEUS_AUTH_TYPE=public
|
|
- MINIO_UPDATE=off
|
|
ports:
|
|
- 9000
|
|
volumes:
|
|
- ./.data/minio:/data
|
|
healthcheck:
|
|
test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
|
|
interval: 15s
|
|
timeout: 20s
|
|
retries: 5
|
|
networks:
|
|
- loki
|
|
|
|
grafana:
|
|
image: grafana/grafana:9.5.6
|
|
environment:
|
|
- GF_PATHS_PROVISIONING=/etc/grafana/provisioning
|
|
- GF_AUTH_ANONYMOUS_ENABLED=true
|
|
- GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
|
|
depends_on:
|
|
- gateway
|
|
entrypoint:
|
|
- sh
|
|
- -euc
|
|
- |
|
|
mkdir -p /etc/grafana/provisioning/datasources
|
|
cat <<EOF > /etc/grafana/provisioning/datasources/ds.yaml
|
|
apiVersion: 1
|
|
datasources:
|
|
- name: Loki
|
|
type: loki
|
|
access: proxy
|
|
url: http://gateway:3100
|
|
jsonData:
|
|
httpHeaderName1: "X-Scope-OrgID"
|
|
secureJsonData:
|
|
httpHeaderValue1: "tenant1"
|
|
EOF
|
|
/run.sh
|
|
ports:
|
|
- "3001:3000"
|
|
volumes:
|
|
- ./grafana/dashboard.yaml:/etc/grafana/provisioning/dashboards/main.yaml
|
|
- ./grafana/dashboards:/var/lib/grafana/dashboards
|
|
healthcheck:
|
|
test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:3001/api/health || exit 1" ]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- loki
|
|
|
|
gateway:
|
|
image: nginx:1.25.1
|
|
depends_on:
|
|
- read
|
|
- write
|
|
entrypoint:
|
|
- sh
|
|
- -euc
|
|
- |
|
|
cat <<EOF > /etc/nginx/nginx.conf
|
|
user nginx;
|
|
worker_processes 5; ## Default: 1
|
|
|
|
events {
|
|
worker_connections 1000;
|
|
}
|
|
|
|
http {
|
|
resolver 127.0.0.11;
|
|
|
|
server {
|
|
listen 3100;
|
|
|
|
location = / {
|
|
return 200 'OK';
|
|
auth_basic off;
|
|
}
|
|
|
|
location = /api/prom/push {
|
|
proxy_pass http://write:3100\$$request_uri;
|
|
}
|
|
|
|
location = /api/prom/tail {
|
|
proxy_pass http://read:3100\$$request_uri;
|
|
proxy_set_header Upgrade \$$http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
}
|
|
|
|
location ~ /api/prom/.* {
|
|
proxy_pass http://read:3100\$$request_uri;
|
|
}
|
|
|
|
location = /loki/api/v1/push {
|
|
proxy_pass http://write:3100\$$request_uri;
|
|
}
|
|
|
|
location = /loki/api/v1/tail {
|
|
proxy_pass http://read:3100\$$request_uri;
|
|
proxy_set_header Upgrade \$$http_upgrade;
|
|
proxy_set_header Connection "upgrade";
|
|
}
|
|
|
|
location ~ /loki/api/.* {
|
|
proxy_pass http://read:3100\$$request_uri;
|
|
}
|
|
}
|
|
}
|
|
EOF
|
|
/docker-entrypoint.sh nginx -g "daemon off;"
|
|
ports:
|
|
- "3100:3100"
|
|
healthcheck:
|
|
test: ["CMD", "service", "nginx", "status"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
networks:
|
|
- loki
|
|
|