Конфигурация приложения перенесена в библиотеку
This commit is contained in:
121
docker-compose.yml
Normal file
121
docker-compose.yml
Normal 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
|
||||
Reference in New Issue
Block a user