Erste Compose Files und Scripte zum deployen. Lokal wird mit docker-compose.overwrite.yml gestartet
parent
1c5d9359ff
commit
2dbc359bd2
|
@ -1 +1 @@
|
|||
Subproject commit 0a0ce37688b0ed26aa5003c9d4deafbb1835fec1
|
||||
Subproject commit 1ef8c2a309d5905eae19d362d57c8dac9996f45f
|
|
@ -0,0 +1,63 @@
|
|||
##
|
||||
## 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:
|
||||
mariadb:
|
||||
image: mariadb:latest
|
||||
container_name: local_mariadb
|
||||
command: --bind-address=0.0.0.0
|
||||
environment:
|
||||
- ALLOW_EMPTY_PASSWORD
|
||||
- MARIADB_USER=mindboost
|
||||
- MARIADB_DATABASE=mindboost
|
||||
- MARIADB_PASSWORD=mindboost
|
||||
- MARIADB_ROOT_PASSWORD=root-mindboost
|
||||
networks:
|
||||
- backend
|
||||
frontend:
|
||||
build:
|
||||
context: ./frontend/src
|
||||
dockerfile: Dockerfile.dev
|
||||
container_name: local_frontend
|
||||
volumes:
|
||||
- ./frontend/src:/app
|
||||
- /app/node_modules
|
||||
ports:
|
||||
- "3000:3000"
|
||||
networks:
|
||||
- backend
|
||||
environment:
|
||||
NODE_ENV: development
|
||||
|
||||
backend:
|
||||
build:
|
||||
context: ./backend/src
|
||||
dockerfile: Dockerfile.dev
|
||||
container_name: local_backend
|
||||
ports:
|
||||
- "8000:8000"
|
||||
- "5173:5173"
|
||||
volumes:
|
||||
- ./backend/src:/var/www
|
||||
networks:
|
||||
- backend
|
||||
depends_on:
|
||||
- mariadb
|
||||
adminer:
|
||||
image: adminer
|
||||
container_name: local_adminer
|
||||
restart: always
|
||||
ports:
|
||||
- 8080:8080
|
||||
networks:
|
||||
- backend
|
||||
networks:
|
||||
backend:
|
||||
external: false
|
|
@ -0,0 +1,71 @@
|
|||
# Stack for Mindboost Webapp
|
||||
|
||||
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
|
||||
networks:
|
||||
prod-backend:
|
||||
external: false
|
||||
proxy:
|
||||
external: true
|
|
@ -0,0 +1,49 @@
|
|||
# ----------------------------------
|
||||
# Datenbank (MariaDB)
|
||||
# ----------------------------------
|
||||
MARIADB_USER=mindboost
|
||||
MARIADB_DATABASE=mindboost
|
||||
MARIADB_PASSWORD=1stronges-mindboostdb-passwort
|
||||
MARIADB_ROOT_PASSWORD=1stronges-passwort-fuer-diedb
|
||||
|
||||
# ----------------------------------
|
||||
# Redis
|
||||
# ----------------------------------
|
||||
REDIS_PASSWORD=laravel-redis-passwort
|
||||
REDIS_PORT=6379
|
||||
|
||||
# ----------------------------------
|
||||
# Vue Frontend (Nuxt.js)
|
||||
# ----------------------------------
|
||||
VUE_APP_BACKEND_HOST_ADDRESS=https://dev.b.mindboost.team
|
||||
VUE_FRONTEND_PORT=3001
|
||||
VUE_INTERNAL_PORT=3000
|
||||
VUE_FRONTEND_DOMAIN_1=app.mindboost.team
|
||||
VUE_FRONTEND_DOMAIN_2=mindboost.app
|
||||
|
||||
# ----------------------------------
|
||||
# Laravel Backend
|
||||
# ----------------------------------
|
||||
BACKEND_NETWORK=backend
|
||||
APP_NAME="mindboost backend - Compose Deployment"
|
||||
APP_URL=https://b.mindboost.team
|
||||
LARAVEL_PORT=8000
|
||||
LARAVEL_VITE_PORT=5173
|
||||
DB_HOST=mariadb
|
||||
DB_PORT=3306
|
||||
DB_PASSWORD=1stronges-mindboostdb-passwort
|
||||
DB_USERNAME=mindboost
|
||||
DB_DATABASE=mindboost
|
||||
LARAVEL_DOMAIN=b.mindboost.team
|
||||
JWT_SECRET=zMtO8sgsnc4UixWSsYWE1pK9EdpNLzxNSoIPlUpTe6dDlarM3bu4cwM80tH3jA0F
|
||||
# ----------------------------------
|
||||
# Traefik
|
||||
# ----------------------------------
|
||||
TRAEFIK_CERT_RESOLVER=http_resolver
|
||||
TRAEFIK_ENTRYPOINT=websecure
|
||||
TRAEFIK_NETWORK=proxy
|
||||
|
||||
# ----------------------------------
|
||||
# Adminer
|
||||
# ----------------------------------
|
||||
ADMINER_PORT=8080
|
|
@ -0,0 +1,8 @@
|
|||
# ----------------------------------
|
||||
# Datenbank (MariaDB)
|
||||
# ----------------------------------
|
||||
MARIADB_USER=mindboost
|
||||
MARIADB_DATABASE=mindboost
|
||||
MARIADB_PASSWORD=1stronges-mindboostdb-passwort
|
||||
MARIADB_ROOT_PASSWORD=1stronges-passwort-fuer-diedb
|
||||
ADMINER_PORT=8000
|
|
@ -0,0 +1 @@
|
|||
DB_HOST= BLALBLAB
|
|
@ -0,0 +1 @@
|
|||
DB_HOST= BLALBLAB
|
|
@ -0,0 +1,24 @@
|
|||
# ----------------------------------
|
||||
# Traefik
|
||||
# ----------------------------------
|
||||
|
||||
# Allgemein
|
||||
TRAEFIK_ENABLE=true
|
||||
TRAEFIK_NETWORK=proxy
|
||||
|
||||
# Backend
|
||||
TRAEFIK_ROUTER_BACKEND_ENTRYPOINT=websecure
|
||||
TRAEFIK_ROUTER_BACKEND_RULE=Host(`b.mindboost.team`)
|
||||
TRAEFIK_ROUTER_BACKEND_TLS=true
|
||||
TRAEFIK_ROUTER_BACKEND_CERTRESOLVER=http_resolver
|
||||
TRAEFIK_ROUTER_BACKEND_TLS_DOMAIN_MAIN=b.mindboost.team
|
||||
TRAEFIK_SERVICE_BACKEND_PORT=8000
|
||||
|
||||
# Frontend
|
||||
TRAEFIK_ROUTER_FRONTEND_ENTRYPOINT=websecure
|
||||
TRAEFIK_ROUTER_FRONTEND_RULE=Host(`app.mindboost.team` || `mindboost.app`)
|
||||
TRAEFIK_ROUTER_FRONTEND_TLS=true
|
||||
TRAEFIK_ROUTER_FRONTEND_CERTRESOLVER=http_resolver
|
||||
TRAEFIK_ROUTER_FRONTEND_TLS_DOMAIN_MAIN=app.mindboost.team
|
||||
TRAEFIK_ROUTER_FRONTEND_TLS_DOMAIN_SANS=mindboost.app
|
||||
TRAEFIK_SERVICE_FRONTEND_PORT=3000
|
|
@ -0,0 +1,22 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "Prüfe, ob Traefik läuft..."
|
||||
|
||||
if ! docker ps --format '{{.Names}}' | grep -q 'traefik'; then
|
||||
echo "Traefik läuft nicht."
|
||||
read -p "Möchtest du die lokale Version zum Debuggen (docker-compose.overwrite.yml) starten? (y/n): " answer
|
||||
if [[ "$answer" =~ ^[Yy]$ ]]; then
|
||||
echo "Starte lokale Version..."
|
||||
docker compose -f ../apps/docker-compose.overwrite.yml up -d
|
||||
else
|
||||
echo "Deployment abgebrochen."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "Traefik läuft."
|
||||
echo "Starte Deployment mit docker-compose.prod.yml..."
|
||||
docker compose -f ../apps/docker-compose.prod.yml up -d
|
||||
fi
|
||||
|
||||
echo "Deployment abgeschlossen."
|
Loading…
Reference in New Issue