871d02406f
Localhost-default (127.0.0.1) compose for the Rust core+bridge; env-driven CORE_PUBLISH. No secrets/staging-prod defaults. Retained WIP verified.
94 lines
3.2 KiB
YAML
94 lines
3.2 KiB
YAML
# ============================================================================
|
|
# ⚠️ LEGACY (FIFA 23 lineage). This compose runs core + bridge for the
|
|
# superseded FIFA 23 direction. It is NOT the canonical server bring-up.
|
|
#
|
|
# Canonical server (FIFA 17):
|
|
# cd fifa17-recon/docker/fifa17-python && docker compose up -d
|
|
# (runbook: fifa17-recon/FUT-RUNBOOK.md)
|
|
#
|
|
# `core` (openfut-core) IS still the shared, game-independent backend and is
|
|
# used by the FIFA 17 UTAS host (OPENFUT_CORE_URL). `bridge` (openfut-bridge)
|
|
# is the retired FIFA 23 integration, kept for reference.
|
|
# Status source of truth: docs/PROJECT_STATE.md
|
|
# ============================================================================
|
|
# OpenFUT server stack — offline FUT backend (Core) + FIFA proxy (Bridge).
|
|
#
|
|
# Bring up: docker compose up -d
|
|
# Tear down: docker compose down (keeps data/captures volumes)
|
|
# Wipe state: docker compose down -v (also drops volumes)
|
|
# Rebuild: docker compose build (or ./scripts/registry.sh build)
|
|
# Logs: docker compose logs -f
|
|
#
|
|
# Images are pulled from / pushed to the Gitea container registry. Override the
|
|
# registry, namespace, or tag in .env (see .env.example). When REGISTRY is set,
|
|
# `up` pulls prebuilt images; the build: blocks let you rebuild locally too.
|
|
|
|
name: openfut
|
|
|
|
services:
|
|
core:
|
|
image: ${REGISTRY:-git.aleshym.co}/${NAMESPACE:-openfut}/openfut-core:${TAG:-latest}
|
|
build:
|
|
context: ./openfut-core
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
environment:
|
|
LISTEN_ADDR: 0.0.0.0:8080
|
|
DATABASE_URL: sqlite:///app/db/openfut.db
|
|
DATA_DIR: /app/data
|
|
RUST_LOG: ${CORE_LOG:-openfut_core=info,tower_http=info}
|
|
volumes:
|
|
- core-db:/app/db
|
|
# Bound to localhost by default — the bridge reaches core over the internal
|
|
# network, so core need not be world-exposed. Set CORE_PUBLISH=0.0.0.0 in
|
|
# .env if you want to hit the REST API directly from other hosts.
|
|
ports:
|
|
- "${CORE_PUBLISH:-127.0.0.1}:8080:8080"
|
|
networks:
|
|
- openfut
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8080/health"]
|
|
interval: 15s
|
|
timeout: 4s
|
|
retries: 5
|
|
start_period: 10s
|
|
|
|
bridge:
|
|
image: ${REGISTRY:-git.aleshym.co}/${NAMESPACE:-openfut}/openfut-bridge:${TAG:-latest}
|
|
build:
|
|
context: ./openfut-bridge
|
|
dockerfile: Dockerfile
|
|
restart: unless-stopped
|
|
depends_on:
|
|
core:
|
|
condition: service_healthy
|
|
environment:
|
|
BRIDGE_LISTEN_ADDR: 0.0.0.0:8443
|
|
CORE_URL: http://core:8080
|
|
CAPTURES_DIR: /app/captures
|
|
PLACEHOLDER_MODE: ${PLACEHOLDER_MODE:-true}
|
|
TLS_ENABLED: "true"
|
|
RUST_LOG: ${BRIDGE_LOG:-openfut_bridge=info,tower_http=info}
|
|
volumes:
|
|
- bridge-captures:/app/captures
|
|
# The FIFA client connects here — publish on all interfaces by default so
|
|
# LAN clients (e.g. 10.10.0.0/24) can reach it.
|
|
ports:
|
|
- "${BRIDGE_PUBLISH:-0.0.0.0}:8443:8443"
|
|
networks:
|
|
- openfut
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-fsSk", "https://127.0.0.1:8443/_bridge/health"]
|
|
interval: 15s
|
|
timeout: 4s
|
|
retries: 5
|
|
start_period: 8s
|
|
|
|
networks:
|
|
openfut:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
core-db:
|
|
bridge-captures:
|