129 lines
3.7 KiB
YAML
129 lines
3.7 KiB
YAML
version: "3.8"
|
||
|
||
services:
|
||
app:
|
||
image: thecodingmachine/php:8.3-v4-apache
|
||
user: "${APP_UID:-0}:${APP_GID:-0}" # root zum Stabilisieren; später gern 33:33
|
||
ports:
|
||
- "${APP_PORT:-8009}:80"
|
||
environment:
|
||
PHP_EXTENSION_PDO_MYSQL: "1"
|
||
APP_BASE_URL: ${APP_BASE_URL:-http://localhost:8009}
|
||
AUTH_DISABLED: ${AUTH_DISABLED:-false}
|
||
|
||
# DB
|
||
DB_HOST: ${DB_HOST:-mariadb}
|
||
DB_PORT: ${DB_PORT:-3306}
|
||
DB_NAME: ${DB_NAME:-qa_tool}
|
||
DB_USER: ${DB_USER:-qa}
|
||
DB_PASS: ${DB_PASS:-change_me}
|
||
|
||
# STORAGE – außerhalb des Code-Mounts
|
||
PDF_STORAGE_DIR: ${PDF_STORAGE_DIR:-/var/reports}
|
||
volumes:
|
||
# CODE (Bind-Mount) – passe den Hostpfad an
|
||
- ${APP_HTDOCS_HOST:-/opt/qa-tool/htdocs}:/var/www/html
|
||
# STORAGE (Named Volume, **RW**!)
|
||
- pdf_storage:/var/reports
|
||
depends_on:
|
||
mariadb:
|
||
condition: service_healthy
|
||
fix-pdf-perms:
|
||
condition: service_completed_successfully
|
||
restart: unless-stopped
|
||
|
||
mariadb:
|
||
image: mariadb:11
|
||
environment:
|
||
MYSQL_DATABASE: ${DB_NAME:-qa_tool}
|
||
MYSQL_USER: ${DB_USER:-qa}
|
||
MYSQL_PASSWORD: ${DB_PASS:-change_me}
|
||
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS:-change_me_root}
|
||
volumes:
|
||
- db_data:/var/lib/mysql
|
||
restart: unless-stopped
|
||
healthcheck:
|
||
test: ["CMD", "mariadb-admin", "ping", "-h", "127.0.0.1", "-p${DB_PASS:-change_me}"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 30
|
||
start_period: 20s
|
||
|
||
schema-loader:
|
||
image: mariadb:11
|
||
depends_on:
|
||
mariadb:
|
||
condition: service_healthy
|
||
environment:
|
||
DB_HOST: ${DB_HOST:-mariadb}
|
||
DB_PORT: ${DB_PORT:-3306}
|
||
DB_NAME: ${DB_NAME:-qa_tool}
|
||
DB_USER: ${DB_USER:-qa}
|
||
DB_PASS: ${DB_PASS:-change_me}
|
||
command:
|
||
- bash
|
||
- -lc
|
||
- |
|
||
until mariadb-admin -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" ping --silent; do sleep 2; done
|
||
mariadb -h"$DB_HOST" -P"$DB_PORT" -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" <<'SQL'
|
||
CREATE TABLE IF NOT EXISTS reports (
|
||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||
module VARCHAR(255),
|
||
module_version VARCHAR(100),
|
||
pbx_version VARCHAR(100),
|
||
olm_nummer VARCHAR(100),
|
||
tester VARCHAR(255),
|
||
docbee_url TEXT,
|
||
summary VARCHAR(255),
|
||
pdf_path TEXT
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
CREATE TABLE IF NOT EXISTS steps (
|
||
id BIGINT AUTO_INCREMENT PRIMARY KEY,
|
||
report_id BIGINT NOT NULL,
|
||
step_index INT,
|
||
step_id VARCHAR(50),
|
||
title TEXT,
|
||
expected TEXT,
|
||
status ENUM('pass','fail','skip','na','') DEFAULT '',
|
||
comment TEXT,
|
||
evidence TEXT,
|
||
group_title VARCHAR(255),
|
||
group_index INT,
|
||
CONSTRAINT fk_steps_report FOREIGN KEY (report_id) REFERENCES reports(id) ON DELETE CASCADE
|
||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||
SQL
|
||
restart: "no"
|
||
|
||
# Rechte-Fix fürs Storage-Volume – nie failen, maximal permissiv
|
||
fix-pdf-perms:
|
||
image: busybox:1.36
|
||
volumes:
|
||
- pdf_storage:/target
|
||
command: |
|
||
sh -lc '
|
||
set +e
|
||
mkdir -p /target
|
||
chmod -R 0777 /target 2>/dev/null || true
|
||
chown -R 0:0 /target 2>/dev/null || true
|
||
exit 0
|
||
'
|
||
restart: "no"
|
||
|
||
phpmyadmin:
|
||
image: phpmyadmin:5
|
||
ports:
|
||
- "${PHPMYADMIN_PORT:-8010}:80"
|
||
environment:
|
||
PMA_HOST: mariadb
|
||
PMA_USER: ${DB_USER:-qa}
|
||
PMA_PASSWORD: ${DB_PASS:-change_me}
|
||
depends_on:
|
||
mariadb:
|
||
condition: service_healthy
|
||
restart: unless-stopped
|
||
|
||
volumes:
|
||
db_data:
|
||
pdf_storage:
|