asxpio/docker-compose.yml
Sergei Poljanski bdb3682e18
Some checks failed
Tests / test (push) Successful in 18s
Build and Deploy to Production / test (push) Successful in 18s
Build and Deploy to Production / build (push) Failing after 2s
Build and Deploy to Production / deploy (push) Has been skipped
bingo: serve datacenter bingo on bingo.asxp.io
Add a second public site to the same process: a 5x5 card of the 25
largest Russian datacenters where a cell is crossed out once an incident
with a public source is recorded (Yandex Sasovo and Kaluga drone strikes
on 2026-10-08/09 are seeded). config.ru dispatches by Host, so it rides
the existing container, DB and bucket instead of a new deploy.

The card is localized ru/en/uk with per-locale columns falling back to
ru. Content is managed from /admin/bingo on asxp.io, reusing AdminAuth
and CSRF. Photos go to the existing bucket under bingo/ and are proxied
by the app, so the bucket stays private and storage needs no change.

The seed data was fact-checked against operator sites and press on
2026-10-10; several entries in the original list were wrong or vague.

Assisted-by: Claude:opus-5
2026-10-10 04:51:26 +04:00

33 lines
1.2 KiB
YAML

services:
asxpio:
# Image will be dynamically updated during deployment
# Format: registry.example.com/user/asxpio:sha_tag
build: .
image: asxpio:latest
container_name: asxpio
restart: unless-stopped
env_file: .env
networks:
- traefik
- storage
labels:
- "traefik.enable=true"
- "traefik.http.routers.asxpio.rule=Host(`asxp.io`) || Host(`www.asxp.io`)"
- "traefik.http.routers.asxpio.entrypoints=websecure"
- "traefik.http.routers.asxpio.tls=true"
- "traefik.http.routers.asxpio.tls.certresolver=letsencrypt"
- "traefik.http.routers.asxpio.service=asxpio"
- "traefik.http.services.asxpio.loadbalancer.server.port=3000"
# Datacenter bingo: same container, routed by Host in config.ru.
# BINGO_HOST is interpolated from /opt/asxpio/.env (written by deploy).
- "traefik.http.routers.asxpio-bingo.rule=Host(`${BINGO_HOST}`)"
- "traefik.http.routers.asxpio-bingo.entrypoints=websecure"
- "traefik.http.routers.asxpio-bingo.tls=true"
- "traefik.http.routers.asxpio-bingo.tls.certresolver=letsencrypt"
- "traefik.http.routers.asxpio-bingo.service=asxpio"
networks:
traefik:
external: true
storage:
external: true