infra/.deploy-infra/deploy-prod.yaml
Egor Matveev 036f4bb2a9
All checks were successful
Deploy Prod / Build (pull_request) Successful in 10s
Deploy Prod / Push (pull_request) Successful in 10s
Deploy Prod / prepare (pull_request) Successful in 7s
Deploy Prod / Deploy prod (pull_request) Successful in 30s
Deploy Dev / Build (pull_request) Successful in 12s
Deploy Dev / Push (pull_request) Successful in 9s
Deploy Dev / prepare (pull_request) Successful in 4s
Deploy Dev / Deploy dev (pull_request) Successful in 19s
fix
2025-06-12 22:12:08 +03:00

203 lines
4.5 KiB
YAML

version: "3.6"
services:
nginx:
image: mathwave/sprint-repo:sprint-infra-nginx-prod
networks:
- common-infra-nginx
- configurator
environment:
MINIO_SECRET_KEY: $MINIO_SECRET_KEY_PROD
ports:
- published: 80
target: 80
mode: host
- published: 443
target: 443
mode: host
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == production]
update_config:
parallelism: 1
# order: start-first
clickhouse:
image: clickhouse
networks:
- clickhouse
volumes:
- /sprint-data/clickhouse:/var/lib/clickhouse
deploy:
mode: replicated
replicas: 1
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == production]
update_config:
parallelism: 1
postgres:
image: postgres:14-alpine3.19
volumes:
- /sprint-data/postgres-data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: $DB_PASSWORD_PROD
healthcheck:
test: pg_isready || pg_resetwal /var/lib/postgresql/data
interval: 60s
retries: 5
start_period: 20s
timeout: 10s
ports:
- published: 5432
target: 5432
mode: host
deploy:
mode: replicated
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == production]
update_config:
parallelism: 1
order: start-first
resources:
limits:
cpus: '1.0'
reservations:
cpus: '0.50'
mongo:
image: mongo:6.0.2
volumes:
- /sprint-data/mongo:/data/db
environment:
MONGO_INITDB_ROOT_USERNAME: mongo
MONGO_INITDB_ROOT_PASSWORD: $MONGO_PASSWORD_PROD
ports:
- published: 27017
target: 27017
mode: host
deploy:
mode: replicated
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == production]
update_config:
parallelism: 1
order: start-first
redis:
image: redis:alpine3.16
volumes:
- /sprint-data/redis:/data
ports:
- published: 6379
target: 6379
mode: host
command: redis-server --requirepass $REDIS_PASSWORD_PROD
deploy:
mode: replicated
restart_policy:
condition: any
placement:
constraints: [node.labels.stage == production]
update_config:
parallelism: 1
order: start-first
minio:
image: bitnami/minio:2022.10.8
volumes:
- minio_data:/data
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: $MINIO_PASSWORD_PROD
ports:
- published: 9000
target: 9000
mode: host
- published: 9001
target: 9001
mode: host
deploy:
mode: replicated
placement:
constraints: [node.labels.stage == production]
restart_policy:
condition: any
update_config:
parallelism: 1
order: start-first
gitea:
image: gitea/gitea:1.22.3
volumes:
- /sprint-data/gitea:/data
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
ports:
- "3000:3000"
- "222:22"
environment:
USER_UID: 1000
USER_GID: 1000
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: pg.sprinthub.ru:5432
GITEA__database__NAME: gitea
GITEA__database__USER: postgres
GITEA__database__PASSWD: $DB_PASSWORD_PROD
deploy:
mode: replicated
placement:
constraints: [node.labels.stage == production]
restart_policy:
condition: any
update_config:
parallelism: 1
order: start-first
gitea-runner:
image: mathwave/sprint-repo:gitea-runner
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /sprint-data:/sprint-data
environment:
GITEA_INSTANCE_URL: https://gitea.sprinthub.ru/
GITEA_RUNNER_REGISTRATION_TOKEN: $REGISTRATION_TOKEN
GITEA_RUNNER_NAME: prod
GITEA_RUNNER_LABELS: prod
deploy:
mode: replicated
placement:
constraints: [node.labels.stage == production]
restart_policy:
condition: any
update_config:
parallelism: 1
order: start-first
volumes:
minio_data:
driver: local
gitea:
networks:
net:
driver: overlay
common-infra-nginx:
external: true
configurator:
external: true
clickhouse:
external: true