129 lines
3.0 KiB
YAML
129 lines
3.0 KiB
YAML
networks:
|
|
lamenu:
|
|
driver: bridge
|
|
|
|
volumes:
|
|
pg_data: null
|
|
pycache: null
|
|
rabbitmq-data: null
|
|
|
|
services:
|
|
traefik:
|
|
image: traefik:v2.10
|
|
command:
|
|
- "--api.insecure=true"
|
|
- "--providers.docker=true"
|
|
- "--entrypoints.web.address=:80"
|
|
- "--providers.docker.exposedbydefault=false"
|
|
ports:
|
|
- "${PORT-84}:80"
|
|
- "8080:8080" # Dashboard uchun
|
|
volumes:
|
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
|
networks:
|
|
- lamenu
|
|
user-nginx:
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.user.rule=PathPrefix(`/user`)"
|
|
- "traefik.http.routers.user.entrypoints=web"
|
|
- "traefik.http.services.user.loadbalancer.server.port=80"
|
|
- "traefik.http.middlewares.user-strip-prefix.stripPrefix.prefixes=/user"
|
|
- "traefik.http.routers.user.middlewares=user-strip-prefix"
|
|
networks:
|
|
- lamenu
|
|
volumes:
|
|
- ./user/resources/layout/nginx.conf:/etc/nginx/nginx.conf
|
|
- ./user/resources/:/usr/share/nginx/html/resources/
|
|
build:
|
|
context: ./user
|
|
dockerfile: ./docker/Dockerfile.nginx
|
|
depends_on:
|
|
- user
|
|
profiles:
|
|
- user
|
|
user:
|
|
networks:
|
|
- lamenu
|
|
build:
|
|
context: ./user
|
|
dockerfile: ./docker/Dockerfile.web
|
|
restart: always
|
|
command: ${user_COMMAND:-sh ./resources/scripts/entrypoint.sh}
|
|
environment:
|
|
- PYTHONPYCACHEPREFIX=/var/cache/pycache
|
|
- JWT_KEY=${JWT_KEY}
|
|
volumes:
|
|
- ./user:/code
|
|
- pycache:/var/cache/pycache
|
|
depends_on:
|
|
- user-db
|
|
- redis
|
|
profiles:
|
|
- user
|
|
user-db:
|
|
networks:
|
|
- lamenu
|
|
image: postgres:16
|
|
restart: always
|
|
environment:
|
|
POSTGRES_DB: django
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: '2309'
|
|
volumes:
|
|
- pg_data:/var/lib/postgresql/data
|
|
profiles:
|
|
- user
|
|
|
|
payment:
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.payment.rule=PathPrefix(`/payment`)"
|
|
- "traefik.http.routers.payment.entrypoints=web"
|
|
- "traefik.http.services.payment.loadbalancer.server.port=8000"
|
|
networks:
|
|
- lamenu
|
|
build:
|
|
context: ./payment
|
|
dockerfile: ./Dockerfile
|
|
restart: always
|
|
environment:
|
|
- JWT_KEY=${JWT_KEY}
|
|
volumes:
|
|
- ./payment:/code
|
|
- pycache:/var/cache/pycache
|
|
profiles:
|
|
- payment
|
|
|
|
notification:
|
|
build:
|
|
context: ./notification
|
|
dockerfile: Dockerfile
|
|
volumes:
|
|
- ./notification:/app
|
|
networks:
|
|
- lamenu
|
|
profiles:
|
|
- notification
|
|
|
|
redis:
|
|
networks:
|
|
- lamenu
|
|
restart: always
|
|
image: redis
|
|
ports:
|
|
- 6379:6379
|
|
|
|
rabbitmq:
|
|
image: rabbitmq:management
|
|
networks:
|
|
- lamenu
|
|
ports:
|
|
- "5672:5672" # RabbitMQ porti
|
|
- "15672:15672" # Web konsol porti
|
|
environment:
|
|
- RABBITMQ_DEFAULT_USER=guest # Foydalanuvchi nomi
|
|
- RABBITMQ_DEFAULT_PASS=guest # Parol
|
|
volumes:
|
|
- rabbitmq-data:/var/lib/rabbitmq # Ma'lumotlarni saqlash
|