Files
practice-3-VM/compose.yaml
2026-05-27 14:56:05 +03:00

61 lines
1.7 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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