Конфигурация приложения перенесена в библиотеку

This commit is contained in:
2026-07-18 20:05:17 +03:00
parent a95793c3df
commit a5a29b03b6
18 changed files with 596 additions and 294 deletions

121
docker-compose.yml Normal file
View File

@@ -0,0 +1,121 @@
#
# Службы
#
services:
# 1. База данных (Источник правды)
db :
image : postgres:15-alpine
container_name: rack_db
restart : always
env_file :
- .env
environment :
POSTGRES_DB : ${rack_DATABASE_NAME}
POSTGRES_USER : ${rack_DATABASE_USERNAME}
POSTGRES_PASSWORD: ${rack_DATABASE_PASSWORD}
ports :
- "${rack_DATABASE_PORT:-5432}:5432"
volumes :
- postgres_data:/var/lib/postgresql/data
networks :
- rack-network
# 2. KeyDB (Сессии, Сокеты, Очереди, Кэш чанков)
keydb :
image : eqalpha/keydb:latest
container_name: rack_keydb
restart : always
env_file :
- .env
ports :
- "${rack_KEYDB_PORT:-6379}:6379"
command : keydb-server --protected-mode no --save ""
volumes :
- keydb_data:/data
networks :
- rack-network
# 3. MinIO (S3 Хранилище)
minio :
image : minio/minio:latest # Всегда доступный и свежий образ
container_name: rack_minio
restart : always
env_file :
- .env
environment :
MINIO_ROOT_USER : ${rack_S3_ACCESS_KEY}
MINIO_ROOT_PASSWORD: ${rack_S3_SECRET_KEY}
ports :
- "${rack_MINIO_API_PORT:-9000}:9000"
- "${rack_MINIO_CONSOLE_PORT:-9001}:9001"
volumes :
- minio_data:/data
command : server /data --console-address ":9001"
healthcheck :
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
networks :
- rack-network
# 4. Авто-создатель бакетов
minio-init:
image : minio/mc:latest
container_name: rack_minio_mc
depends_on :
minio:
condition: service_healthy
env_file :
- .env
entrypoint : >
/bin/sh -c "
echo 'Настройка подключения к MinIO...';
/usr/bin/mc alias set local http://minio:9000 ${rack_S3_ACCESS_KEY} ${rack_S3_SECRET_KEY};
echo 'Ожидание готовности сервера...';
while ! /usr/bin/mc ping local --count 1 > /dev/null 2>&1; do
sleep 1;
done;
echo 'Сервер готов. Создание бакетов...';
/usr/bin/mc mb local/${rack_S3_BUCKET_PREFIX}-avatar --ignore-existing || true;
/usr/bin/mc mb local/${rack_S3_BUCKET_PREFIX}-media --ignore-existing || true;
echo 'Бакеты успешно проверены/созданы!';
exit 0;
"
networks :
- rack-network
# 5. Почтовый сервер (Ловушка для писем)
mailpit :
image : axllent/mailpit:latest
container_name: rack_mail
restart : always
env_file :
- .env
ports :
- "${rack_MAILPIT_UI_PORT:-8025}:8025"
- "${rack_MAILPIT_SMTP_PORT:-1025}:1025"
networks :
- rack-network
#
# Тома
#
volumes :
postgres_data:
keydb_data :
minio_data :
#
# Сеть
#
networks:
rack-network:
driver: bridge
name : rack-network