Initial commit
This commit is contained in:
61
compose.yaml
Normal file
61
compose.yaml
Normal 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
|
||||
Reference in New Issue
Block a user