Initial commit

This commit is contained in:
ededov
2026-05-27 14:56:05 +03:00
commit 239efd40b0
6 changed files with 474 additions and 0 deletions

61
compose.yaml Normal file
View File

@@ -0,0 +1,61 @@
version: '3.8'
services:
# 1. PostgreSQL - база данных
postgres:
image: postgres:15-alpine # лёгкая версия для ARM64
container_name: blog-postgres
environment:
POSTGRES_DB: blog
POSTGRES_USER: blog_user
POSTGRES_PASSWORD: blog_password
volumes:
- postgres_data:/var/lib/postgresql/data
- ./app/init.sql:/docker-entrypoint-initdb.d/init.sql # скрипт инициализации
ports:
- "5432:5432" # только для отладки, можно убрать
networks:
- blog-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U blog_user -d blog"]
interval: 5s
timeout: 5s
retries: 5
# 2. Flask-приложение (собирается из Dockerfile)
flask:
build: . # использует Dockerfile в текущей папке
container_name: blog-flask
environment:
DB_HOST: postgres
DB_NAME: blog
DB_USER: blog_user
DB_PASSWORD: blog_password
depends_on:
postgres:
condition: service_healthy
networks:
- blog-network
# Не публикуем порт 5000 наружу, только через Nginx
# 3. Nginx - обратный прокси
nginx:
image: nginx:alpine
container_name: blog-nginx
ports:
- "80:80" # основной вход в приложение
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- flask
networks:
- blog-network
# Тома для сохранения данных БД
volumes:
postgres_data:
# Сеть для всех сервисов
networks:
blog-network:
driver: bridge