Files

245 lines
5.8 KiB
YAML
Raw Permalink Normal View History

version: '3.9'
services:
2025-12-23 16:05:51 +07:00
storage:
image: alpine:latest
container_name: file-storage
2025-12-30 12:08:23 +07:00
deploy:
resources:
limits:
memory: 128M
reservations:
memory: 64M
2025-12-23 16:05:51 +07:00
networks:
- app-network
volumes:
- uploads_data:/storage:rw
command: tail -f /dev/null
restart: unless-stopped
db:
2026-01-15 16:17:03 +07:00
image: postgres:17.7
restart: always
2025-12-30 12:08:23 +07:00
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
cpus: '1.0'
memory: 1G
environment:
2025-11-24 22:39:08 +07:00
POSTGRES_DB: no_copy_
2026-01-15 16:17:03 +07:00
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
2025-12-30 12:08:23 +07:00
POSTGRES_SHARED_BUFFERS: 512MB
POSTGRES_EFFECTIVE_CACHE_SIZE: 1536MB
ports:
2025-11-24 22:39:08 +07:00
- "54320:5432"
volumes:
- pgdata:/var/lib/postgresql/data
2026-01-15 16:17:03 +07:00
- ./init-scripts:/docker-entrypoint-initdb.d:ro
container_name: postgres
2025-12-03 16:56:49 +07:00
networks:
2025-12-04 10:50:26 +07:00
app-network:
aliases:
- database
app:
2025-12-03 16:56:49 +07:00
build: .
2025-12-04 10:50:26 +07:00
container_name: app-backend
2025-12-30 12:08:23 +07:00
deploy:
resources:
limits:
cpus: '1.5'
memory: 1G
reservations:
cpus: '0.5'
memory: 512M
environment:
2025-12-16 03:44:59 +07:00
FILE_STORAGE_PATH: /data/uploads
2025-12-25 13:04:49 +07:00
MAX_FILE_SIZE: 10737418240
2026-01-08 12:59:30 +07:00
FILE_CHUNK_SIZE: 1000000
2025-11-24 22:39:08 +07:00
POSTGRES_DB: no_copy_
2026-01-15 16:17:03 +07:00
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_PORT: 5432
2025-11-24 22:39:08 +07:00
POSTGRES_HOST: db
2025-12-23 16:05:51 +07:00
STORAGE_SERVICE_URL: http://storage:8081
2026-01-10 00:35:29 +07:00
SPRING_PROFILES_ACTIVE: docker
2026-01-10 01:06:32 +07:00
YANDEX_API_KEY: AQVNyaVaUmgUb1GMCtf5zSEqFxy0woXrcMOOB43q
YANDEX_FOLDER_ID: b1gokpdbm6qfpsou8pcd
YANDEX_SEARCH_URL: "https://searchapi.api.cloud.yandex.net/v2/image/search_by_image"
depends_on:
2025-11-24 22:39:08 +07:00
- db
ports:
2025-12-04 14:15:50 +07:00
- "80:8080"
2025-12-03 16:56:49 +07:00
networks:
2025-12-04 10:50:26 +07:00
app-network:
aliases:
- app
- backend
- api
2025-12-15 19:49:09 +07:00
volumes:
2025-12-23 16:05:51 +07:00
- uploads_data:/data/uploads:rw
2026-01-15 16:17:03 +07:00
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d no_copy_" ]
interval: 10s
retries: 5
2025-11-25 13:31:50 +07:00
grafana:
image: grafana/grafana:10.3.1
container_name: grafana
2025-12-30 12:08:23 +07:00
deploy:
resources:
limits:
cpus: '0.5'
memory: 512M
reservations:
memory: 256M
2025-11-25 13:31:50 +07:00
ports:
- "3000:3000"
depends_on:
prometheus:
condition: service_healthy
loki:
condition: service_healthy
tempo:
condition: service_started
alloy:
condition: service_started
environment:
2025-12-02 15:17:11 +07:00
GF_AUTH_ANONYMOUS_ENABLED: "true"
2025-11-25 13:31:50 +07:00
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: admin
GF_METRICS_ENABLED: "true"
2025-12-30 12:08:23 +07:00
GF_DATABASE_MAX_IDLE_CONN: "2"
GF_DATABASE_MAX_OPEN_CONN: "10"
2025-11-25 13:31:50 +07:00
volumes:
- ./infrastructure/grafana/provisioning:/etc/grafana/provisioning
- ./infrastructure/grafana/dashboards:/var/lib/grafana/dashboards
healthcheck:
test: [ "CMD", "wget", "--spider", "http://localhost:3000/api/health" ]
interval: 10s
timeout: 5s
retries: 10
2025-12-03 16:56:49 +07:00
networks:
- app-network
2025-11-25 13:31:50 +07:00
prometheus:
image: prom/prometheus:latest
container_name: prometheus
2026-01-09 12:34:24 +07:00
deploy:
2025-12-30 12:08:23 +07:00
resources:
limits:
cpus: '0.5'
memory: 1G
reservations:
memory: 512M
2025-11-25 13:31:50 +07:00
ports:
- "9090:9090"
volumes:
- ./infrastructure/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
2025-12-30 12:08:23 +07:00
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=15d' # Удерживать 15 дней
- '--web.enable-lifecycle'
2025-11-25 13:31:50 +07:00
healthcheck:
test: [ "CMD", "wget", "--spider", "http://localhost:9090/-/healthy" ]
interval: 10s
timeout: 5s
retries: 5
2025-12-03 16:56:49 +07:00
networks:
- app-network
2025-11-25 13:31:50 +07:00
loki:
image: grafana/loki:2.9.2
container_name: loki
2026-01-09 12:34:24 +07:00
deploy:
2025-12-30 12:08:23 +07:00
resources:
limits:
cpus: '1.0'
memory: 2G
reservations:
memory: 1G
2025-11-25 13:31:50 +07:00
ports:
- "3100:3100"
volumes:
- ./infrastructure/loki/loki-config.yaml:/etc/loki/loki-config.yaml:ro
2025-12-30 12:08:23 +07:00
- loki_data:/loki
command:
- -config.file=/etc/loki/loki-config.yaml
2025-11-25 13:31:50 +07:00
healthcheck:
test: [ "CMD", "wget", "--spider", "-q", "http://localhost:3100/ready" ]
interval: 10s
timeout: 5s
retries: 5
2025-12-03 16:56:49 +07:00
networks:
- app-network
2025-11-25 13:31:50 +07:00
tempo:
image: grafana/tempo:2.4.1
container_name: tempo
2026-01-09 12:34:24 +07:00
deploy:
2025-12-30 12:08:23 +07:00
resources:
limits:
cpus: '0.5'
memory: 512M
reservations:
memory: 256M
2025-11-25 13:31:50 +07:00
command: [ "-config.file=/etc/tempo/tempo.yaml" ]
volumes:
- ./infrastructure/tempo/tempo.yaml:/etc/tempo/tempo.yaml
- tempo_data:/var/tempo
ports:
- "3200:3200"
2025-12-03 16:56:49 +07:00
networks:
- app-network
2025-11-25 13:31:50 +07:00
alloy:
image: grafana/alloy:latest
container_name: alloy
2025-12-30 12:08:23 +07:00
deploy:
resources:
limits:
cpus: '0.5'
memory: 256M
reservations:
memory: 128M
2025-11-25 13:31:50 +07:00
user: root
ports:
2025-12-03 16:56:49 +07:00
- "9080:9080"
- "4317:4317"
- "4318:4318"
2025-11-25 13:31:50 +07:00
volumes:
- ./infrastructure/alloy/config.alloy:/etc/alloy/config.alloy:ro
- /var/lib/docker/containers:/var/lib/docker/containers:ro
- /var/run/docker.sock:/var/run/docker.sock
- /var/log:/var/log:ro
environment:
GRAFANA_LOKI_URL: http://loki:3100/loki/api/v1/push
command:
- run
- --server.http.listen-addr=0.0.0.0:9080
- --storage.path=/var/lib/alloy/data
- /etc/alloy/config.alloy
2025-12-03 16:56:49 +07:00
networks:
- app-network
2025-11-25 13:31:50 +07:00
volumes:
2025-11-25 13:31:50 +07:00
pgdata:
artifacts:
tempo_data:
loki_data:
loki_chunks:
loki_index:
2025-12-03 16:56:49 +07:00
loki_rules:
2025-12-23 16:05:51 +07:00
uploads_data:
2025-12-30 12:08:23 +07:00
prometheus_data:
2025-12-03 16:56:49 +07:00
networks:
app-network:
2025-12-04 10:26:00 +07:00
external: true
2025-12-03 16:56:49 +07:00
driver: bridge