Files
simple-travel-backend/stack.yaml
2025-09-19 15:19:32 +05:00

163 lines
3.5 KiB
YAML

version: "3.9"
services:
db:
image: postgres:16.3-alpine
environment:
- POSTGRES_DB=django
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=2309
volumes:
- pg_data:/var/lib/postgresql/data
networks:
- simple_travel
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
restart_policy:
condition: any
max_attempts: 0
update_config:
parallelism: 1
order: start-first
failure_action: rollback
monitor: 30s
delay: 30s
max_failure_ratio: 0.2
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
redis:
image: redis:alpine
command: ["redis-server", "--appendonly", "yes"]
networks:
- simple_travel
deploy:
replicas: 1
placement:
constraints:
- node.role == manager
restart_policy:
condition: any
update_config:
failure_action: rollback
monitor: 30s
delay: 30s
max_failure_ratio: 0.2
parallelism: 1
order: start-first
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 15s
timeout: 10s
retries: 5
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
web:
image: jscorptech/simple_travel:latest
env_file:
- .env
environment:
- PYTHONPYCACHEPREFIX=/var/cache/pycache
networks:
- simple_travel
volumes:
- logs:/code/resources/logs/
- media:/code/resources/media/
- static:/code/resources/staticfiles/
- pycache:/var/cache/pycache
tmpfs:
- /tmp
- /run
deploy:
replicas: 1
restart_policy:
condition: any
update_config:
failure_action: rollback
monitor: 30s
delay: 30s
max_failure_ratio: 0.2
parallelism: 1
order: start-first
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8000/health/ || exit 1"]
interval: 15s
timeout: 15s
retries: 5
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
nginx:
image: jscorptech/nginx:v1
ports:
- mode: ingress
target: 80
published: 8080
protocol: tcp
volumes:
- type: bind
source: ./resources/layout/nginx.conf
target: /etc/nginx/nginx.conf
read_only: true
- media:/usr/share/nginx/html/resources/media/:ro
- static:/usr/share/nginx/html/resources/staticfiles/:ro
networks:
- simple_travel
deploy:
replicas: 1
restart_policy:
condition: any
placement:
constraints:
- node.role == manager
update_config:
failure_action: rollback
monitor: 10s
delay: 10s
max_failure_ratio: 0.2
parallelism: 1
order: start-first
tmpfs:
- /var/cache/nginx
- /var/run
- /var/tmp
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost/health/ || exit 1"]
interval: 10s
timeout: 5s
retries: 5
logging:
driver: json-file
options:
max-size: "10m"
max-file: "3"
networks:
simple_travel:
driver: overlay
volumes:
media:
pg_data:
pycache:
static:
logs: