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:
2
docker/pgsql/init-master.sql
Normal file
2
docker/pgsql/init-master.sql
Normal 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
12
docker/pgsql/init-slave.sh
Executable 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
|
||||
19
docker/pgsql/pgbouncer.ini
Normal file
19
docker/pgsql/pgbouncer.ini
Normal 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
|
||||
1
docker/pgsql/userlist.txt
Normal file
1
docker/pgsql/userlist.txt
Normal file
@@ -0,0 +1 @@
|
||||
"e-ticket" "md5f79275ff8ae69fcb9e6218d88e699961"
|
||||
Reference in New Issue
Block a user