108 lines
4.0 KiB
YAML
108 lines
4.0 KiB
YAML
##
|
|
## DIESES COMPOSE FILE IST FÜR DIE LOKALE ENTWICKLUNG MITTELS DOCKER
|
|
##
|
|
## Der Inhalt von frontend und von backend wird über ein volume eingebunden, dass
|
|
## bedeutet Änderungen innerhalb der Projektordner ./frontend/src und ./backend/src
|
|
## Ändern direkt die Werte innerhalb des Containers wie z.B. das Austauschen einer Grafik.
|
|
##
|
|
## Datenbank ebenfalls lokal und KEIN reverse-Proxy (traefik)
|
|
## Image der DB ist auf ARM Archtektur (Apple Silicon) ausgelegt
|
|
##
|
|
|
|
services:
|
|
prod-mariadb:
|
|
image: mariadb:latest
|
|
container_name: prod-mariadb
|
|
hostname: mariadb
|
|
command: --bind-address=0.0.0.0
|
|
env_file:
|
|
- ../config/.env.db
|
|
networks:
|
|
- ${BACKEND_NETWORK}
|
|
volumes:
|
|
- ../volumes/daten/mariadb:/var/lib/mysql
|
|
prod-redis:
|
|
image: redis:alpine
|
|
container_name: prod-redis
|
|
hostname: redis
|
|
networks:
|
|
- ${BACKEND_NETWORK}
|
|
restart: unless-stopped
|
|
command: redis-server --appendonly yes --requirepass laravel-redis-passwort # Redis Passwort eingeben
|
|
volumes:
|
|
- ../volumes/daten/redis:/data
|
|
prod-frontend:
|
|
build:
|
|
context: ./frontend/src
|
|
dockerfile: Dockerfile
|
|
container_name: prod-frontend
|
|
networks:
|
|
- ${BACKEND_NETWORK}
|
|
- ${TRAEFIK_NETWORK}
|
|
env_file:
|
|
- ../config/.env.frontend
|
|
- ../config/.env.traefik
|
|
labels:
|
|
- "traefik.enable=${TRAEFIK_ENABLE}"
|
|
- "traefik.http.routers.prod-frontend.entrypoints=${TRAEFIK_ROUTER_FRONTEND_ENTRYPOINT}"
|
|
- "traefik.http.routers.prod-frontend.rule=${TRAEFIK_ROUTER_FRONTEND_RULE}"
|
|
- "traefik.http.routers.prod-frontend.tls=${TRAEFIK_ROUTER_FRONTEND_TLS}"
|
|
- "traefik.http.routers.prod-frontend.tls.certresolver=${TRAEFIK_ROUTER_FRONTEND_CERTRESOLVER}"
|
|
- "traefik.http.routers.prod-frontend.tls.domains[0].main=${TRAEFIK_ROUTER_FRONTEND_TLS_DOMAIN_MAIN}"
|
|
- "traefik.http.routers.prod-frontend.tls.domains[0].sans=${TRAEFIK_ROUTER_FRONTEND_TLS_DOMAIN_SANS}"
|
|
- "traefik.http.services.prod-frontend.loadbalancer.server.port=${TRAEFIK_SERVICE_FRONTEND_PORT}"
|
|
- "traefik.docker.network=${TRAEFIK_NETWORK}"
|
|
prod-backend:
|
|
build:
|
|
context: ./backend/src
|
|
dockerfile: Dockerfile
|
|
env_file:
|
|
- ../config/.env.backend
|
|
- ../config/.env.traefik
|
|
labels:
|
|
- "traefik.enable=${TRAEFIK_ENABLE}"
|
|
- "traefik.http.routers.prod-backend.entrypoints=${TRAEFIK_ROUTER_BACKEND_ENTRYPOINT}"
|
|
- "traefik.http.routers.prod-backend.rule=${TRAEFIK_ROUTER_BACKEND_RULE}"
|
|
- "traefik.http.routers.prod-backend.tls=${TRAEFIK_ROUTER_BACKEND_TLS}"
|
|
- "traefik.http.routers.prod-backend.tls.certresolver=${TRAEFIK_ROUTER_BACKEND_CERTRESOLVER}"
|
|
- "traefik.http.routers.prod-backend.tls.domains[0].main=${TRAEFIK_ROUTER_BACKEND_TLS_DOMAIN_MAIN}"
|
|
- "traefik.http.services.prod-backend.loadbalancer.server.port=${TRAEFIK_SERVICE_BACKEND_PORT}"
|
|
- "traefik.docker.network=${TRAEFIK_NETWORK}"
|
|
networks:
|
|
- ${BACKEND_NETWORK}
|
|
- ${TRAEFIK_NETWORK}
|
|
depends_on:
|
|
- prod-mariadb
|
|
# Traefik-Crowdsec Stack
|
|
crowdsec:
|
|
extends:
|
|
file: ./proxy/docker-compose.yml
|
|
service: crowdsec
|
|
networks:
|
|
- ${TRAEFIK_NETWORK}
|
|
|
|
traefik:
|
|
extends:
|
|
file: ./proxy/docker-compose.yml
|
|
service: traefik
|
|
networks:
|
|
- ${TRAEFIK_NETWORK}
|
|
depends_on:
|
|
- crowdsec
|
|
|
|
traefik_crowdsec_bouncer:
|
|
extends:
|
|
file: ./proxy/docker-compose.yml
|
|
service: traefik_crowdsec_bouncer
|
|
networks:
|
|
- ${TRAEFIK_NETWORK}
|
|
depends_on:
|
|
- crowdsec
|
|
- traefik
|
|
|
|
networks:
|
|
prod-backend:
|
|
external: false
|
|
proxy:
|
|
external: true
|