Compare commits
8 Commits
c9b55aa0ed
...
rapp/creat
Author | SHA1 | Date | |
---|---|---|---|
61853ac2cd | |||
56e6a53f0a | |||
62a96dc243 | |||
d4f202f204 | |||
49badb74a7 | |||
71d080a87e | |||
138525835d | |||
f6e3793193 |
@@ -128,12 +128,6 @@ Our infrastructure uses a two-tier network model to enhance security and isolate
|
||||
- These networks are not directly accessible from the internet and provide secure communication between public and internal services.
|
||||
- Examples: backend_network, database_network, etc.
|
||||
|
||||
Service Network Configuration:
|
||||
- Frontend: Connected to proxy_network and backend_network
|
||||
- Backend API: Connected to backend_network and database_network
|
||||
- Database: Connected only to database_network
|
||||
- Traefik: Connected only to proxy_network
|
||||
|
||||
This structure ensures that:
|
||||
- The proxy (Traefik) can route traffic to public-facing services.
|
||||
- Internal services (like databases) are not directly accessible from the proxy network.
|
||||
@@ -163,7 +157,7 @@ The `volumes/` folder contains subdirectories for different volumes used by vari
|
||||
|
||||
Each subdirectory corresponds to a specific service or group of services, containing the persistent data that needs to be preserved across container restarts or redeployments.
|
||||
|
||||
When configuring Docker Compose files, reference these volume paths to ensure data persistence. For example:
|
||||
When configuring Docker Compose files, reference these volume paths to ensure data persistence.
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
|
@@ -43,6 +43,6 @@ services:
|
||||
volumes:
|
||||
backend_redis_data:
|
||||
driver: local
|
||||
name: "${INFRASTRUCTURE_LABEL}_backend_redis_data"
|
||||
name: "${INFRASTRUCTURE_LABEL:-default}_backend_redis_data"
|
||||
|
||||
|
||||
|
Submodule apps/backend/src updated: 623a270948...8dcadaec5c
8
apps/develop/adminer/docker-compose.overwrite.yml
Normal file
8
apps/develop/adminer/docker-compose.overwrite.yml
Normal file
@@ -0,0 +1,8 @@
|
||||
services:
|
||||
adminer:
|
||||
profiles: ["all", "database", "backend", "adminer", "app"]
|
||||
image: adminer
|
||||
container_name: ${INFRASTRUCTURE_LABEL:-default}-adminer-${ENVIRONMENT:-development}
|
||||
restart: always
|
||||
ports:
|
||||
- ${ADMINER_PORT:-0}:8080
|
20
apps/develop/adminer/docker-compose.yml
Normal file
20
apps/develop/adminer/docker-compose.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
services:
|
||||
adminer:
|
||||
profiles: ["all", "database", "backend", "adminer", "app"]
|
||||
image: adminer
|
||||
container_name: ${INFRASTRUCTURE_LABEL:-default}-adminer-${ENVIRONMENT:-development}
|
||||
restart: always
|
||||
ports:
|
||||
- ${ADMINER_PORT:-0}:8080
|
||||
networks:
|
||||
- database
|
||||
- proxy
|
||||
labels:
|
||||
- "traefik.enable=${TRAEFIK_ENABLE:-false}"
|
||||
- "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.entrypoints=${TRAEFIK_ENTRYPOINT:-websecure}"
|
||||
- "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.rule=Host(`${ADMINER_DOMAIN:-adminer.local}`)"
|
||||
- "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.tls=true"
|
||||
- "traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.tls.certresolver=${TRAEFIK_CERT_RESOLVER:-http_resolver}"
|
||||
- 'traefik.http.routers.${INFRASTRUCTURE_LABEL:-default}_adminer.service=adminer'
|
||||
- "traefik.http.adminer.cloud.loadbalancer.server.port=8080"
|
||||
- "traefik.docker.network=${TRAEFIK_NETWORK:-default}"
|
@@ -11,7 +11,7 @@ services:
|
||||
depends_on:
|
||||
- gitea_db
|
||||
labels:
|
||||
- "traefik.enable=${TRAEFIK_ENABLE}"
|
||||
- "traefik.enable=${TRAEFIK_ENABLE:-false}"
|
||||
- "traefik.http.routers.gitea.entrypoints=${TRAEFIK_ENTRYPOINT}"
|
||||
- "traefik.http.routers.gitea.rule=(Host(`${GITEA_DOMAIN})`)"
|
||||
- "traefik.http.routers.gitea.tls=true"
|
||||
|
Submodule apps/frontend/src updated: b5ed737d10...078571bc57
@@ -26,7 +26,4 @@ services:
|
||||
volumes:
|
||||
kirbycms_data:
|
||||
driver: local
|
||||
driver_opts:
|
||||
type: none
|
||||
o: bind
|
||||
device: /mnt/docker-volumes/website/kirbycms # Neuer fester Speicherort
|
||||
|
||||
|
@@ -1 +1 @@
|
||||
USERID=0
|
||||
USERID=${USERID:-0}
|
||||
|
191
env/.env.all
vendored
191
env/.env.all
vendored
@@ -37,194 +37,3 @@ SERVER_IP=127.0.0.1
|
||||
# ✅ If needed, manually override variables in the shell or CLI.
|
||||
#
|
||||
#################################################################################################
|
||||
|
||||
## ______________________________________________________________________________________________
|
||||
## SEVICE GROUP ADMINISTRATION
|
||||
## ______________________________________________________________________________________________
|
||||
|
||||
# ----------------------------------
|
||||
# Portainer
|
||||
# ----------------------------------
|
||||
|
||||
PORTAINER_IMAGE=portainer/portainer-ce:latest
|
||||
PORTAINER_DATA_PATH=../../../volumes/administration/portainer/data
|
||||
|
||||
## ______________________________________________________________________________________________
|
||||
## SEVICE GROUP DATABASE
|
||||
## ______________________________________________________________________________________________
|
||||
|
||||
# ----------------------------------
|
||||
# Datenbank (MariaDB)
|
||||
# ----------------------------------
|
||||
MARIADB_USER=${INFRASTRUCTURE_LABEL:-default}_${ENVIRONMENT:-development}
|
||||
MARIADB_DATABASE=${INFRASTRUCTURE_LABEL:-default}_${ENVIRONMENT:-development}
|
||||
MARIADB_PASSWORD=${INFRASTRUCTURE_LABEL:-default}_${ENVIRONMENT:-development}
|
||||
MARIADB_ROOT_PASSWORD=${INFRASTRUCTURE_LABEL:-default}_${ENVIRONMENT:-development}-root
|
||||
|
||||
MARIADB_PORT=3306
|
||||
MARIADB_HOST=${INFRASTRUCTURE_LABEL:-default}_database_${ENVIRONMENT:-development}
|
||||
|
||||
|
||||
## ______________________________________________________________________________________________
|
||||
## SEVICE GROUP BACKEND
|
||||
## ______________________________________________________________________________________________
|
||||
|
||||
# ----------------------------------
|
||||
# Redis
|
||||
# ----------------------------------
|
||||
REDIS_PASSWORD=laravel-redis-passwort
|
||||
REDIS_PORT=6379
|
||||
|
||||
# ----------------------------------
|
||||
# Laravel Backend
|
||||
# ----------------------------------
|
||||
BACKEND_NETWORK=backend
|
||||
APP_NAME="mindboost backend - Compose Deployment"
|
||||
APP_URL=https://backend.local
|
||||
LARAVEL_PORT=8000
|
||||
LARAVEL_VITE_PORT=5173
|
||||
DB_HOST=${MARIADB_HOST:-mariadb}
|
||||
DB_PORT=${MARIADB_PORT:-3306}
|
||||
DB_PASSWORD=${MARIADB_PASSWORD:-default}
|
||||
DB_USERNAME=${MARIADB_USER:-default}
|
||||
DB_DATABASE=${MARIADB_DATABASE:-default}
|
||||
|
||||
JWT_SECRET=zMtO8sgsnc4UixWSsYWE1pK9EdpNLzxNSoIPlUpTe6dDlarM3bu4cwM80tH3jA0F
|
||||
|
||||
# ----------------------------------
|
||||
# Adminer
|
||||
# ----------------------------------
|
||||
ADMINER_PORT=8080
|
||||
|
||||
|
||||
## ______________________________________________________________________________________________
|
||||
## SEVICE GROUP DEVELOP
|
||||
## ______________________________________________________________________________________________
|
||||
|
||||
# ----------------------------------
|
||||
# GITEA AND GITEA DB
|
||||
# ----------------------------------
|
||||
|
||||
USER_UID=1000
|
||||
USER_GID=1000
|
||||
|
||||
GITEA_VOLUME_PATH=../../../volumes/develop/gitea/gitea
|
||||
GITEA_DATABASE_VOLUME_PATH=../../../volumes/develop/gitea/gitea_db
|
||||
|
||||
GITEA_MYSQL_ROOT_PASSWORD=very-difficult-passwort-gitea
|
||||
GITEA_MYSQL_USER=gitea
|
||||
GITEA_MYSQL_PASSWORD=very-difficult-gitea
|
||||
GITEA_MYSQL_DATABASE=gitea
|
||||
GITEA_MYSQL_ALLOW_EMPTY_PASSWORD=true
|
||||
|
||||
|
||||
## ______________________________________________________________________________________________
|
||||
## SEVICE GROUP FRONTEND
|
||||
## ______________________________________________________________________________________________
|
||||
|
||||
# ----------------------------------
|
||||
# VUE APP
|
||||
# ----------------------------------
|
||||
|
||||
BACKEND_URL="backend.local"
|
||||
|
||||
## ______________________________________________________________________________________________
|
||||
## SEVICE GROUP PROXY
|
||||
## ______________________________________________________________________________________________
|
||||
|
||||
|
||||
# ----------------------------------
|
||||
# TRAEFIK
|
||||
# ----------------------------------
|
||||
|
||||
TRAEFIK_ENABLE=true
|
||||
TRAEFIK_NETWORK=proxy
|
||||
TRAEFIK_BASIC_AUTH_USERS=${ADMIN_USER:-admin}:${ADMIN_PASSWORD_HASH}
|
||||
TRAEFIK_CERT_RESOLVER=
|
||||
|
||||
## Domains when TRAEFIK is ENABLED
|
||||
|
||||
PORTAINER_DOMAIN=portainer.local
|
||||
FRONTEND_DOMAIN=frontend.local
|
||||
FRONTEND_DOMAIN_2=app.frontend.local
|
||||
BACKEND_DOMAIN=backend.local
|
||||
WEBSITE_DOMAIN=web.local
|
||||
GITEA_DOMAIN=gitea.local
|
||||
LIMESURVEY_DOMAIN=survey.local
|
||||
LINKSTACK_DOMAIN=linkstack.local
|
||||
TRAEFIK_DOMAIN=traefik.local
|
||||
CLOUD_DOMAIN=cloud.local
|
||||
|
||||
### TLS for Domains
|
||||
|
||||
PORTAINER_TLS_DOMAIN_MAIN=${PORTAINER_DOMAIN}
|
||||
FRONTEND_TLS_DOMAIN_MAIN=${FRONTEND_DOMAIN}
|
||||
FRONTEND_TLS_DOMAIN_SANS=${FRONTEND_DOMAIN_2}
|
||||
BACKEND_TLS_DOMAIN_MAIN=${BACKEND_DOMAIN}
|
||||
WEBSITE_TLS_DOMAIN_MAIN=${WEBSITE_DOMAIN}
|
||||
GITEA_TLS_DOMAIN_MAIN=${GITEA_DOMAIN}
|
||||
LIMESURVEY_TLS_DOMAIN_MAIN=${LIMESURVEY_DOMAIN}
|
||||
LINKSTACK_TLS_DOMAIN_MAIN=${LINKSTACK_DOMAIN}
|
||||
TRAEFIK_TLS_DOMAIN_MAIN=${TRAEFIK_DOMAIN}
|
||||
CLOUD_TLS_DOMAIN_MAIN=${CLOUD_DOMAIN}
|
||||
|
||||
|
||||
## MIDDLEWARES
|
||||
|
||||
TRAEFIK_HTTPS_REDIRECT_MIDDLEWARE=${INFRASTRUCTURE_LABEL:-default}-https-redirect
|
||||
TRAEFIK_BASIC_AUTH_MIDDLEWARE=${INFRASTRUCTURE_LABEL:-default}-basic-auth
|
||||
|
||||
|
||||
## ENTRYPOINTS
|
||||
|
||||
TRAEFIK_ENTRYPOINT=websecure
|
||||
TRAEFIK_ENTRYPOINT_HTTP=web
|
||||
|
||||
|
||||
## ______________________________________________________________________________________________
|
||||
## SEVICE GROUP SECURITY
|
||||
## ______________________________________________________________________________________________
|
||||
|
||||
# ----------------------------------
|
||||
# WIREGUARD
|
||||
# ----------------------------------
|
||||
WG_DEFAULT_ADDRESS=22.22.22.0
|
||||
WG_HOST=${SERVER_IP:-127.0.0.1}
|
||||
WG_LANG=de
|
||||
|
||||
## ______________________________________________________________________________________________
|
||||
## SEVICE GROUP TOOLS
|
||||
## ______________________________________________________________________________________________
|
||||
|
||||
# ----------------------------------
|
||||
# NEXTCLOUD DB
|
||||
# ----------------------------------
|
||||
|
||||
MYSQL_ROOT_PASSWORD=headpiece-constant1-denim-mindboost #SQL root Passwort eingeben
|
||||
MYSQL_PASSWORD=idealist9-frayed-murkiness-mindboost #SQL Benutzer Passwort eingeben
|
||||
MYSQL_DATABASE=nextcloud-mindboost #Datenbank Name
|
||||
MYSQL_USER=mindboostcloud #SQL Nutzername
|
||||
MYSQL_INITDB_SKIP_TZINFO=1
|
||||
MARIADB_AUTO_UPGRADE=1
|
||||
|
||||
# ----------------------------------
|
||||
# NEXTCLOUD CLOUD
|
||||
# ----------------------------------
|
||||
|
||||
TRUSTED_PROXIES=172.16.255.254/16
|
||||
OVERWRITEPROTOCOL=https
|
||||
OVERWRITECLIURL=https://${CLOUD_DOMAIN:-cloud}
|
||||
OVERWRITEHOST=${CLOUD_DOMAIN:-cloud}
|
||||
REDIS_HOST=nextcloud-redis
|
||||
REDIS_HOST_PASSWORD=redis-mindboost-passwort
|
||||
|
||||
|
||||
## ______________________________________________________________________________________________
|
||||
## SEVICE GROUP WEBSITE
|
||||
## ______________________________________________________________________________________________
|
||||
|
||||
# ----------------------------------
|
||||
# KIRBY CMS
|
||||
# ----------------------------------
|
||||
|
||||
KIRBY_USER_ID=0
|
50
env/README.md
vendored
Normal file
50
env/README.md
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
# 🔧 Environment Configuration Guide
|
||||
|
||||
## 🌍 Overview
|
||||
This project uses **environment variables** to manage configuration across different environments (development, staging, production, etc.). These variables are loaded from `.env` files and can be overridden at multiple levels.
|
||||
|
||||
---
|
||||
|
||||
## 📌 **Environment Variable Priority (Lowest to Highest)**
|
||||
|
||||
| 🔢 Priority | 📄 Source | 🔍 Description |
|
||||
|------------|-----------------------------|------------------------------------------------|
|
||||
| 1️⃣ **Fallback Values** | hardcoded defaults | Used only if no other configuration is provided |
|
||||
| 2️⃣ **Global Defaults** | `.env.all` | Shared settings for all services |
|
||||
| 3️⃣ **Service-Specific Overrides** | `.env.backend`, `.env.proxy`, etc. | Overrides `.env.all` with service-specific values |
|
||||
| 4️⃣ **Shell Environment Variables** | `export VAR=value` before running | Takes precedence over `.env` files |
|
||||
| 5️⃣ **CLI Overrides** | `docker compose --env-file` or `-e VAR=value` | **Highest priority** (for temporary overrides) |
|
||||
|
||||
---
|
||||
|
||||
## 🔄 **Overwriting Behavior**
|
||||
- 🏗 **Variables defined in `.env.all`** override fallback values.
|
||||
- 🏗 **Variables defined in `.env.<service>`** (e.g., `.env.backend`) override `.env.all`.
|
||||
- 🔧 **Manually exported environment variables** in the shell take priority over `.env` files.
|
||||
- 🚀 **Variables passed via CLI (`--env-file` or `-e VAR=value`)** override everything.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 **Best Practices**
|
||||
✔️ **Use `.env.all` for global configurations** (e.g., `ENVIRONMENT=development`, `INFRASTRUCTURE_LABEL=myinfra`).
|
||||
✔️ **Use `.env.<service>` for service-specific configurations** (e.g., `.env.backend` for Laravel, `.env.database` for MariaDB).
|
||||
✔️ **If needed, manually override variables in the shell** using `export VAR=value`.
|
||||
✔️ **Use CLI `--env-file` for temporary overrides** in testing/debugging scenarios.
|
||||
|
||||
---
|
||||
|
||||
## 🏗 **Example File Structure**
|
||||
```sh
|
||||
/env/
|
||||
├── .env.all # Global default variables
|
||||
├── development/
|
||||
│ ├── .env.backend # Backend service config for development
|
||||
│ ├── .env.database # Database config for development
|
||||
│ ├── .env.proxy # Proxy config for development
|
||||
├── staging/
|
||||
│ ├── .env.backend # Backend service config for staging
|
||||
│ ├── .env.database # Database config for staging
|
||||
├── production/
|
||||
│ ├── .env.backend # Backend service config for production
|
||||
│ ├── .env.database # Database config for production
|
||||
|
31
env/development/portainer/backend.env
vendored
Normal file
31
env/development/portainer/backend.env
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
|
||||
# ----------------------------------
|
||||
# Redis
|
||||
# ----------------------------------
|
||||
REDIS_PASSWORD=laravel-redis-passwort
|
||||
REDIS_PORT=6379
|
||||
SERVER_IP=${SERVER_IP:-localhost}
|
||||
|
||||
# ----------------------------------
|
||||
# Laravel Backend
|
||||
# ----------------------------------
|
||||
BACKEND_NETWORK=backend
|
||||
APP_ENV=${ENVIRONMENT-local}
|
||||
APP_NAME="mindboost backend - Compose Deployment"
|
||||
APP_URL=https://backend.local
|
||||
LARAVEL_PORT=8000
|
||||
LARAVEL_VITE_PORT=5173
|
||||
JWT_SECRET=zMtO8sgsnc4UixWSsYWE1pK9EdpNLzxNSoIPlUpTe6dDlarM3bu4cwM80tH3jA0F
|
||||
|
||||
# ----------------------------------
|
||||
# Datenbank Zugriff - ! MUSS MIT .env.database übereinstimmen
|
||||
# ----------------------------------
|
||||
DB_HOST=database
|
||||
DB_PORT=3306
|
||||
DB_PASSWORD=1stronges-mindboostdb-passwort
|
||||
DB_USERNAME=${INFRASTRUCTURE_LABEL:-default}_${ENVIRONMENT:-development}
|
||||
DB_DATABASE=${INFRASTRUCTURE_LABEL:-default}_${ENVIRONMENT:-development}
|
||||
|
||||
|
||||
|
3
scripts/debug/deploy-backend.sh
Executable file
3
scripts/debug/deploy-backend.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
source ./../setup/set-global-env.sh
|
||||
chmod +x ./../../apps/backend/src/entrypoint.sh
|
||||
docker compose -f ./../../apps/backend/docker-compose.overwrite.yml --env-file ./../../env/${ENVIRONMENT}/.env.database --env-file ./../../env/${ENVIRONMENT}/.env.backend --profile backend up
|
13
scripts/setup/set-global-env.sh
Normal file → Executable file
13
scripts/setup/set-global-env.sh
Normal file → Executable file
@@ -4,7 +4,18 @@
|
||||
# Stelle sicher, dass ROOT_DIR gesetzt ist
|
||||
if [ -z "$ROOT_DIR" ]; then
|
||||
echo "❌ WARN: ROOT_DIR ist nicht gesetzt! Setze ROOT_DIR..."
|
||||
source ./set-project-root.sh
|
||||
# Bestimme das Root-Verzeichnis des Git-Repos
|
||||
ROOT_DIR=$(git rev-parse --show-toplevel 2>/dev/null)
|
||||
|
||||
# Falls das Repository nicht gefunden wurde, abbrechen
|
||||
if [ -z "$ROOT_DIR" ]; then
|
||||
echo "❌ Fehler: Kein Git-Repository gefunden!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Setze die Variable für die aktuelle Shell-Sitzung
|
||||
export ROOT_DIR
|
||||
echo "✅ ROOT_DIR gesetzt auf: $ROOT_DIR"
|
||||
fi
|
||||
|
||||
# Setze den Pfad zur .env.all Datei relativ zum Projekt-Root
|
||||
|
0
scripts/setup/set-project-root.sh
Normal file → Executable file
0
scripts/setup/set-project-root.sh
Normal file → Executable file
@@ -1,4 +1,9 @@
|
||||
#!/bin/bash
|
||||
source ../setup/set-project-root.sh
|
||||
source ../setup/set-global-env.sh
|
||||
source ../setup/set-proxy-env.sh
|
||||
source ../setup/generate-secrets.sh
|
||||
|
||||
|
||||
# Pfad zur .env.all Datei
|
||||
ENV_FILE="../../env/.env.all"
|
||||
|
@@ -1,4 +1,8 @@
|
||||
#!/bin/bash
|
||||
source ../setup/set-project-root.sh
|
||||
source ../setup/set-global-env.sh
|
||||
source ../setup/set-proxy-env.sh
|
||||
source ../setup/generate-secrets.sh
|
||||
|
||||
# Pfad zur .env.all Datei
|
||||
ENV_FILE="../../env/.env.all"
|
||||
@@ -13,7 +17,7 @@ ENVIRONMENT=$(get_env_var "ENVIRONMENT")
|
||||
SERVER_IP=$(curl -s https://api.ipify.org)
|
||||
|
||||
# Liste aller Stacks
|
||||
STACKS=("frontend" "database" "backend")
|
||||
STACKS=("proxy" "frontend" "database" "backend")
|
||||
|
||||
# Liste aller Environments
|
||||
ENVIRONMENTS=("development" "staging" "production")
|
||||
@@ -44,7 +48,7 @@ else
|
||||
fi
|
||||
|
||||
# Ausgabe der Variablen
|
||||
echo "Deploying to:"
|
||||
echo "Deploying to"
|
||||
echo "INFRASTRUCTURE: ${INFRASTRUCTURE:-Not set}"
|
||||
echo "ENVIRONMENT: ${ENVIRONMENT:-Not set}"
|
||||
echo "-----------------------------------"
|
||||
@@ -57,5 +61,5 @@ fi
|
||||
|
||||
|
||||
# Ausführen des Docker Compose Befehls
|
||||
docker compose -f ../../apps/docker-compose.all.yml --env-file ../../env/.env.all -p ${INFRASTRUCTURE:-my} --profile app up --remove-orphans $BUILD_OPTION
|
||||
docker compose -f ../../apps/docker-compose.all.yml -p ${INFRASTRUCTURE:-my} --profile app up --remove-orphans $BUILD_OPTION
|
||||
|
||||
|
3
scripts/start/deploy-backend.sh
Executable file
3
scripts/start/deploy-backend.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
source ./../setup/set-global-env.sh
|
||||
chmod +x ./../../apps/backend/src/entrypoint.sh
|
||||
docker compose -f ./../../apps/backend/docker-compose.yml --env-file ./../../env/${ENVIRONMENT}/.env.database --env-file ./../../env/${ENVIRONMENT}/.env.backend --profile backend up
|
@@ -3,7 +3,7 @@ set -e
|
||||
|
||||
# Funktion zur Überprüfung der Produktivumgebung
|
||||
is_production() {
|
||||
local prod_ip="85.215.56.185" # IP-Adresse deines Produktivservers
|
||||
local prod_ip=${SERVER_IP:-127.0.0.1} # IP-Adresse deines Produktivservers
|
||||
local current_ip
|
||||
|
||||
# Überprüfe das Betriebssystem
|
||||
@@ -69,30 +69,27 @@ if ! docker ps --format '{{.Names}}' | grep -q 'traefik'; then
|
||||
echo "Wir befinden uns in der Produktivumgebung."
|
||||
echo "Starte Traefik und CrowdSec Bouncer mit docker-compose.traefik.prod.yml..."
|
||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
||||
docker compose -f ../apps/proxy/docker-compose.traefik.prod.yml up -d
|
||||
docker compose -f ../../apps/proxy/docker-compose.yml --env-file ../../env/.env.all --env-file ../../env/${ENVIRONMENT:-development}/.env.proxy --profile proxy up --remove-orphans -d
|
||||
else
|
||||
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
||||
echo "Starte Traefik und CrowdSec Bouncer mit docker-compose.traefik.local.yml..."
|
||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
||||
docker compose -f ../apps/docker-compose.traefik.local.yml up -d
|
||||
docker compose -f ../../apps/proxy/docker-compose.overwrite.yml --env-file ../../env/.env.all --env-file ../../env/${ENVIRONMENT:-development}/.env.proxy --profile proxy up --remove-orphans -d
|
||||
fi
|
||||
else
|
||||
echo "Traefik läuft bereits. Aktualisiere die Konfiguration..."
|
||||
|
||||
if is_production; then
|
||||
echo "Aktualisiere Traefik und CrowdSec Bouncer in der Produktivumgebung..."
|
||||
docker compose -f ../apps/docker-compose.traefik.prod.yml up -d
|
||||
docker compose -f ../../apps/proxy/docker-compose.yml --env-file ../../env/.env.all --env-file ../../env/${ENVIRONMENT:-development}/.env.proxy --profile proxy up --remove-orphans -d
|
||||
else
|
||||
echo "Aktualisiere Traefik und CrowdSec Bouncer in der lokalen Umgebung..."
|
||||
docker compose -f ../apps/docker-compose.traefik.local.yml up -d
|
||||
docker compose -f ../../apps/proxy/docker-compose.overwrite.yml --env-file ../../env/.env.all --env-file ../../env/${ENVIRONMENT:-development}/.env.proxy --profile proxy up --remove-orphans -d
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Traefik und CrowdSec Bouncer Deployment abgeschlossen."
|
||||
|
||||
=================
|
||||
|
||||
|
||||
echo "Prüfe, ob Traefik läuft..."
|
||||
|
||||
set_environment_variables
|
||||
@@ -106,14 +103,14 @@ fi
|
||||
|
||||
if is_production; then
|
||||
echo "Wir befinden uns in der Produktivumgebung."
|
||||
echo "Starte/Aktualisiere Deployment mit docker-compose.prod.yml..."
|
||||
echo "Starte/Aktualisiere Deployment mit docker-compose.yml..."
|
||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
||||
docker compose -f ../apps/docker-compose.prod.yml up -d
|
||||
docker compose -f ../../apps/proxy/docker-compose.yml --env-file ../../env/.env.all --env-file ../../env/${ENVIRONMENT:-development}/.env.proxy --profile proxy up --remove-orphans -d
|
||||
else
|
||||
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
||||
echo "Starte/Aktualisiere lokale Version mit docker-compose.overwrite.yml..."
|
||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
||||
docker compose -f ../apps/docker-compose.overwrite.yml up -d
|
||||
docker compose -f ../../apps/proxy/docker-compose.overwrite.yml --env-file ../../env/.env.all --env-file ../../env/${ENVIRONMENT:-development}/.env.proxy --profile proxy up --remove-orphans -d
|
||||
fi
|
||||
|
||||
|
||||
@@ -123,9 +120,9 @@ if ! docker ps --format '{{.Names}}' | grep -q 'traefik'; then
|
||||
if is_production; then
|
||||
echo "Wir befinden uns in der Produktivumgebung."
|
||||
set_environment_variables
|
||||
echo "Starte Deployment mit docker-compose.prod.yml..."
|
||||
echo "Starte Deployment mit docker-compose.yml..."
|
||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
||||
docker compose -f ../apps/docker-compose.prod.yml up -d
|
||||
docker compose -f ../../apps/proxy/docker-compose.yml --env-file ../../env/.env.all --env-file ../../env/${ENVIRONMENT:-development}/.env.proxy --profile proxy up --remove-orphans -d
|
||||
else
|
||||
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
||||
read -p "Möchtest du die lokale Version zum Debuggen (docker-compose.overwrite.yml) starten? (y/n): " answer
|
||||
@@ -133,7 +130,7 @@ if ! docker ps --format '{{.Names}}' | grep -q 'traefik'; then
|
||||
echo "Starte lokale Version..."
|
||||
set_environment_variables
|
||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
||||
docker compose -f ../apps/docker-compose.overwrite.yml up -d
|
||||
docker compose -f ../../apps/proxy/docker-compose.overwrite.yml --env-file ../../env/.env.all --env-file ../../env/${ENVIRONMENT:-development}/.env.proxy --profile proxy up --remove-orphans -d
|
||||
else
|
||||
echo "Deployment abgebrochen."
|
||||
exit 1
|
||||
@@ -145,15 +142,15 @@ else
|
||||
if is_production; then
|
||||
echo "Wir befinden uns in der Produktivumgebung."
|
||||
set_environment_variables
|
||||
echo "Aktualisiere Deployment mit docker-compose.prod.yml..."
|
||||
echo "Aktualisiere Deployment mit docker-compose.yml..."
|
||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
||||
docker compose -f ../apps/docker-compose.prod.yml up -d
|
||||
docker compose -f ../../apps/proxy/docker-compose.yml --env-file ../../env/.env.all --env-file ../../env/${ENVIRONMENT:-development}/.env.proxy --profile proxy up --remove-orphans -d
|
||||
else
|
||||
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
||||
set_environment_variables
|
||||
echo "Aktualisiere lokale Version mit docker-compose.overwrite.yml..."
|
||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
||||
docker compose -f ../apps/docker-compose.overwrite.yml up -d
|
||||
docker compose -f ../../apps/proxy/docker-compose.overwrite.yml --env-file ../../env/.env.all --env-file ../../env/${ENVIRONMENT:-development}/.env.proxy --profile proxy up --remove-orphans -d
|
||||
fi
|
||||
fi
|
||||
|
||||
|
37
scripts/start/deploy.sh
Executable file
37
scripts/start/deploy.sh
Executable file
@@ -0,0 +1,37 @@
|
||||
#!/bin/bash
|
||||
#!/bin/bash
|
||||
|
||||
# Bestimme das Root-Verzeichnis des Git-Repos
|
||||
ROOT_DIR=$(git rev-parse --show-toplevel 2>/dev/null)
|
||||
|
||||
# Falls das Repository nicht gefunden wurde, abbrechen
|
||||
if [ -z "$ROOT_DIR" ]; then
|
||||
echo "❌ Fehler: Kein Git-Repository gefunden!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Setze die Variable für die aktuelle Shell-Sitzung
|
||||
echo "✅ ROOT_DIR gesetzt auf: $ROOT_DIR"
|
||||
|
||||
# Pfad zur .env.all Datei
|
||||
ENV_FILE="${ROOT_DIR}/env/.env.all"
|
||||
echo $ENV_FILE
|
||||
# Funktion zum Auslesen von Variablen aus der .env.all Datei
|
||||
get_env_var() {
|
||||
grep "^$1=" "$ENV_FILE" | cut -d '=' -f2
|
||||
}
|
||||
|
||||
# Auslesen der INFRASTRUCTURE und ENVIRONMENT Variablen
|
||||
INFRASTRUCTURE=$(get_env_var "INFRASTRUCTURE_LABEL")
|
||||
ENVIRONMENT=$(get_env_var "ENVIRONMENT")
|
||||
SERVER_IP=$(curl -s https://api.ipify.org)
|
||||
|
||||
|
||||
# Ausgabe der Variablen
|
||||
echo "Deploying to:"
|
||||
echo "INFRASTRUCTURE: ${INFRASTRUCTURE:-Not set}"
|
||||
echo "ENVIRONMENT: ${ENVIRONMENT:-Not set}"
|
||||
echo "-----------------------------------"
|
||||
|
||||
# Ausführen des Docker Compose Befehls
|
||||
docker compose -f ../../apps/docker-compose.all.yml -p ${INFRASTRUCTURE:-my} --env-file ${ENV_FILE} --env-file ${ROOT_DIR}/env/${ENVIRONMENT:-development}/.env.proxy --profile app up --remove-orphans
|
Reference in New Issue
Block a user