Files
ADconsle/docker/compose.yaml
T
kzbkowskiandClaude Sonnet 5 1126d96271
CI / PHP 8.2 (push) Failing after 2m46s
CI / PHP 8.3 (push) Failing after 59s
CI / PHP 8.4 (push) Failing after 1m7s
ADconsole v1.0.0
First public release.

- docs: document the audit log, user offboarding, CSV export and the
  "require a reason for destructive actions" setting across README, docs/
  and CLAUDE/AGENTS.md; note retention for panel_audit
- docs: fill the publishing placeholders (repo URL, security contact,
  issue-template links) and add a semantic-versioning policy
- move agent/contributor context into CLAUDE/ (AGENTS.md + a README);
  root CLAUDE.md is now a thin @-import pointer
- add a favicon (shield-lock, matching the login screen) to the login
  page and the app layout
- CHANGELOG: promote [Unreleased] to [1.0.0]; keep the earlier internal
  build as [0.1.0]

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UfuvfwexztdS7LDpGuKsuK
2026-09-08 23:14:39 +02:00

72 lines
2.2 KiB
YAML

name: adconsole
# =============================================================================
# Production-ish Compose stack: PHP/Apache app + MariaDB.
#
# Reverse proxy: this file assumes an external Traefik instance on the
# `traefik_public` network. If you don't use Traefik, drop in a local override
# that publishes a port instead - see docker/compose.override.yaml.template
# and docs/deployment.md.
#
# Run from the repo root:
# docker compose -f docker/compose.yaml up -d --build
# =============================================================================
services:
app:
build:
context: ..
dockerfile: docker/php/Dockerfile
container_name: adconsole_app
restart: unless-stopped
volumes:
- ..:/var/www/html
- app_storage:/var/www/html/storage
depends_on:
mariadb:
condition: service_healthy
networks:
- internal
- traefik_public
labels:
- traefik.enable=true
- traefik.docker.network=traefik_public
- traefik.http.routers.adconsole.rule=Host(`${APP_DOMAIN:-adconsole.localhost}`)
- traefik.http.routers.adconsole.entrypoints=websecure
- traefik.http.routers.adconsole.tls=true
# Uncomment and set your resolver to let Traefik obtain a certificate:
# - traefik.http.routers.adconsole.tls.certresolver=letsencrypt
- traefik.http.services.adconsole.loadbalancer.server.port=80
mariadb:
image: mariadb:11
container_name: adconsole_db
restart: unless-stopped
environment:
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-change-me-root}
MARIADB_DATABASE: ${DB_DATABASE:-adconsole}
MARIADB_USER: ${DB_USERNAME:-adconsole}
MARIADB_PASSWORD: ${DB_PASSWORD:-change-me}
MARIADB_AUTO_UPGRADE: "1"
volumes:
- db_data:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
networks:
- internal
volumes:
db_data:
app_storage:
networks:
internal:
# Provided by your Traefik deployment. Remove this (and the `traefik_public`
# entry + labels under `app`) if you use the local port-publishing override.
traefik_public:
external: true