Viel neues
This commit is contained in:
128
qa-tool/compose/docker-compose.yml
Normal file
128
qa-tool/compose/docker-compose.yml
Normal file
@@ -0,0 +1,128 @@
|
||||
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:
|
||||
Reference in New Issue
Block a user