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.
|
- These networks are not directly accessible from the internet and provide secure communication between public and internal services.
|
||||||
- Examples: backend_network, database_network, etc.
|
- 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:
|
This structure ensures that:
|
||||||
- The proxy (Traefik) can route traffic to public-facing services.
|
- The proxy (Traefik) can route traffic to public-facing services.
|
||||||
- Internal services (like databases) are not directly accessible from the proxy network.
|
- 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.
|
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
|
```yaml
|
||||||
volumes:
|
volumes:
|
||||||
|
@@ -43,6 +43,6 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
backend_redis_data:
|
backend_redis_data:
|
||||||
driver: local
|
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:
|
depends_on:
|
||||||
- gitea_db
|
- gitea_db
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=${TRAEFIK_ENABLE}"
|
- "traefik.enable=${TRAEFIK_ENABLE:-false}"
|
||||||
- "traefik.http.routers.gitea.entrypoints=${TRAEFIK_ENTRYPOINT}"
|
- "traefik.http.routers.gitea.entrypoints=${TRAEFIK_ENTRYPOINT}"
|
||||||
- "traefik.http.routers.gitea.rule=(Host(`${GITEA_DOMAIN})`)"
|
- "traefik.http.routers.gitea.rule=(Host(`${GITEA_DOMAIN})`)"
|
||||||
- "traefik.http.routers.gitea.tls=true"
|
- "traefik.http.routers.gitea.tls=true"
|
||||||
|
Submodule apps/frontend/src updated: b5ed737d10...078571bc57
@@ -26,7 +26,4 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
kirbycms_data:
|
kirbycms_data:
|
||||||
driver: local
|
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.
|
# ✅ 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
|
# Stelle sicher, dass ROOT_DIR gesetzt ist
|
||||||
if [ -z "$ROOT_DIR" ]; then
|
if [ -z "$ROOT_DIR" ]; then
|
||||||
echo "❌ WARN: ROOT_DIR ist nicht gesetzt! Setze ROOT_DIR..."
|
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
|
fi
|
||||||
|
|
||||||
# Setze den Pfad zur .env.all Datei relativ zum Projekt-Root
|
# 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
|
#!/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
|
# Pfad zur .env.all Datei
|
||||||
ENV_FILE="../../env/.env.all"
|
ENV_FILE="../../env/.env.all"
|
||||||
|
@@ -1,4 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/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
|
# Pfad zur .env.all Datei
|
||||||
ENV_FILE="../../env/.env.all"
|
ENV_FILE="../../env/.env.all"
|
||||||
@@ -13,7 +17,7 @@ ENVIRONMENT=$(get_env_var "ENVIRONMENT")
|
|||||||
SERVER_IP=$(curl -s https://api.ipify.org)
|
SERVER_IP=$(curl -s https://api.ipify.org)
|
||||||
|
|
||||||
# Liste aller Stacks
|
# Liste aller Stacks
|
||||||
STACKS=("frontend" "database" "backend")
|
STACKS=("proxy" "frontend" "database" "backend")
|
||||||
|
|
||||||
# Liste aller Environments
|
# Liste aller Environments
|
||||||
ENVIRONMENTS=("development" "staging" "production")
|
ENVIRONMENTS=("development" "staging" "production")
|
||||||
@@ -44,7 +48,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Ausgabe der Variablen
|
# Ausgabe der Variablen
|
||||||
echo "Deploying to:"
|
echo "Deploying to"
|
||||||
echo "INFRASTRUCTURE: ${INFRASTRUCTURE:-Not set}"
|
echo "INFRASTRUCTURE: ${INFRASTRUCTURE:-Not set}"
|
||||||
echo "ENVIRONMENT: ${ENVIRONMENT:-Not set}"
|
echo "ENVIRONMENT: ${ENVIRONMENT:-Not set}"
|
||||||
echo "-----------------------------------"
|
echo "-----------------------------------"
|
||||||
@@ -57,5 +61,5 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
# Ausführen des Docker Compose Befehls
|
# 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
|
# Funktion zur Überprüfung der Produktivumgebung
|
||||||
is_production() {
|
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
|
local current_ip
|
||||||
|
|
||||||
# Überprüfe das Betriebssystem
|
# Ü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 "Wir befinden uns in der Produktivumgebung."
|
||||||
echo "Starte Traefik und CrowdSec Bouncer mit docker-compose.traefik.prod.yml..."
|
echo "Starte Traefik und CrowdSec Bouncer mit docker-compose.traefik.prod.yml..."
|
||||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
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
|
else
|
||||||
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
||||||
echo "Starte Traefik und CrowdSec Bouncer mit docker-compose.traefik.local.yml..."
|
echo "Starte Traefik und CrowdSec Bouncer mit docker-compose.traefik.local.yml..."
|
||||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
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
|
fi
|
||||||
else
|
else
|
||||||
echo "Traefik läuft bereits. Aktualisiere die Konfiguration..."
|
echo "Traefik läuft bereits. Aktualisiere die Konfiguration..."
|
||||||
|
|
||||||
if is_production; then
|
if is_production; then
|
||||||
echo "Aktualisiere Traefik und CrowdSec Bouncer in der Produktivumgebung..."
|
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
|
else
|
||||||
echo "Aktualisiere Traefik und CrowdSec Bouncer in der lokalen Umgebung..."
|
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Traefik und CrowdSec Bouncer Deployment abgeschlossen."
|
echo "Traefik und CrowdSec Bouncer Deployment abgeschlossen."
|
||||||
|
|
||||||
=================
|
|
||||||
|
|
||||||
|
|
||||||
echo "Prüfe, ob Traefik läuft..."
|
echo "Prüfe, ob Traefik läuft..."
|
||||||
|
|
||||||
set_environment_variables
|
set_environment_variables
|
||||||
@@ -106,14 +103,14 @@ fi
|
|||||||
|
|
||||||
if is_production; then
|
if is_production; then
|
||||||
echo "Wir befinden uns in der Produktivumgebung."
|
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
|
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
|
else
|
||||||
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
||||||
echo "Starte/Aktualisiere lokale Version mit docker-compose.overwrite.yml..."
|
echo "Starte/Aktualisiere lokale Version mit docker-compose.overwrite.yml..."
|
||||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
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
|
||||||
|
|
||||||
|
|
||||||
@@ -123,9 +120,9 @@ if ! docker ps --format '{{.Names}}' | grep -q 'traefik'; then
|
|||||||
if is_production; then
|
if is_production; then
|
||||||
echo "Wir befinden uns in der Produktivumgebung."
|
echo "Wir befinden uns in der Produktivumgebung."
|
||||||
set_environment_variables
|
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
|
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
|
else
|
||||||
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
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
|
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..."
|
echo "Starte lokale Version..."
|
||||||
set_environment_variables
|
set_environment_variables
|
||||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
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
|
else
|
||||||
echo "Deployment abgebrochen."
|
echo "Deployment abgebrochen."
|
||||||
exit 1
|
exit 1
|
||||||
@@ -145,15 +142,15 @@ else
|
|||||||
if is_production; then
|
if is_production; then
|
||||||
echo "Wir befinden uns in der Produktivumgebung."
|
echo "Wir befinden uns in der Produktivumgebung."
|
||||||
set_environment_variables
|
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
|
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
|
else
|
||||||
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
|
||||||
set_environment_variables
|
set_environment_variables
|
||||||
echo "Aktualisiere lokale Version mit docker-compose.overwrite.yml..."
|
echo "Aktualisiere lokale Version mit docker-compose.overwrite.yml..."
|
||||||
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
|
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
|
||||||
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