Add Docker infrastructure for dev and prod environments

- Separate PHP Dockerfiles (dev/prod) with extensions and prod opcache/php.ini optimization
- docker-compose-dev: PHP, PostgreSQL, Redis, Messenger, Mailpit, RedisInsight
- docker-compose-prod: 2x PHP replicas, PgSQL master/slave with PgBouncer, 2x Messenger, Redis
- Makefile with build/start/stop/purge commands
- AGENT.md to restrict AI access to the repository

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Serreau Jovann
2026-03-18 20:12:09 +01:00
parent 9341647acf
commit 653d7b4729
14 changed files with 378 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'e-ticket';
SELECT pg_create_physical_replication_slot('slave_slot');

12
docker/pgsql/init-slave.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/bin/bash
set -e
until pg_isready -h db-master -U e-ticket; do
echo "Waiting for master..."
sleep 2
done
rm -rf /var/lib/postgresql/data/*
pg_basebackup -h db-master -D /var/lib/postgresql/data -U replicator -Fp -Xs -P -R
echo "hot_standby = on" >> /var/lib/postgresql/data/postgresql.conf

View File

@@ -0,0 +1,19 @@
[databases]
e-ticket = host=db-master port=5432 dbname=e-ticket
e-ticket_readonly = host=db-slave port=5432 dbname=e-ticket
[pgbouncer]
listen_addr = 0.0.0.0
listen_port = 6432
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
pool_mode = transaction
max_client_conn = 200
default_pool_size = 20
min_pool_size = 5
reserve_pool_size = 5
reserve_pool_timeout = 3
server_lifetime = 3600
server_idle_timeout = 600
log_connections = 0
log_disconnections = 0

View File

@@ -0,0 +1 @@
"e-ticket" "md5f79275ff8ae69fcb9e6218d88e699961"