feat: add Docker setup exposing app on port 7876

- Dockerfile: php:apache base, installs PHP extensions + Composer,
  configures Apache to listen on port 7876, bundles app code,
  runs composer install at build time
- docker-compose.yml: web service (port 7876) + MariaDB LTS with
  healthcheck; writable volume for DB persistence
- docker/entrypoint.sh: generates .env from environment variables
  at container start, fixes runtime permissions
- docker/php.ini: tuned PHP limits (512M memory, 32M upload)
- .dockerignore: excludes .git, vendor, logs, cache, old docker dir
- .env.example: template for required environment variables

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-29 08:52:57 +02:00
parent 6145e45059
commit a0328d69f6
6 changed files with 187 additions and 0 deletions

43
docker-compose.yml Normal file
View File

@@ -0,0 +1,43 @@
services:
web:
build: .
container_name: domnitor-web
restart: unless-stopped
ports:
- "7876:7876"
environment:
DB_HOST: db
DB_PORT: "3306"
DB_DATABASE: ${DB_DATABASE:-domain_monitor}
DB_USERNAME: ${DB_USERNAME:-domain_monitor}
DB_PASSWORD: ${DB_PASSWORD:-changeme}
APP_ENV: ${APP_ENV:-production}
TZ: ${TZ:-UTC}
depends_on:
db:
condition: service_healthy
db:
image: mariadb:lts
container_name: domnitor-db
restart: unless-stopped
environment:
MARIADB_DATABASE: ${DB_DATABASE:-domain_monitor}
MARIADB_USER: ${DB_USERNAME:-domain_monitor}
MARIADB_PASSWORD: ${DB_PASSWORD:-changeme}
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-rootchangeme}
TZ: ${TZ:-UTC}
command:
- "--character-set-server=utf8mb4"
- "--collation-server=utf8mb4_unicode_ci"
volumes:
- dbdata:/var/lib/mysql
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
start_period: 15s
interval: 10s
timeout: 5s
retries: 5
volumes:
dbdata: