AutoDevReverseProxy/README.md
2022-11-18 13:27:34 +01:00

115 lines
3.7 KiB
Markdown

# Starten des Reverse-Proxies
Der Proxy kann über docker compose gestartet werden
```bash
docker compose up -d
```
# Hinzufügen von Docker Containern
Container werden automatisch vom reverse proxy/host manager aufgegriffen wenn sie:
1. Die Umgebungsvariable `VIRTUAL_HOST` gesetzt haben.
2. Im gleichen Docker-Netzwek (Default: `proxy`) sind.
Optional kann über die Umgebungsvariable `VIRTUAL_PORT` der gebundene Port gesetzt werden (Default: 80)
## Minimale Beispiel-Konfiguration
In diesem Beispiel sind zwei Container, nur der `app` Kontainer ist teil des proxy Netzwerks, der `db` Container ist nicht im proxy Netzwerk.
```yaml
version: "3.4"
services:
db:
image: mariadb:10.4
environment:
MYSQL_DATABASE: db_name
MYSQL_USER: db_user
MYSQL_PASSWORD: db_user_pass
MYSQL_ROOT_PASSWORD: db_root_pass
restart: unless-stopped
volumes:
- db-data:/var/lib/mysql
app:
image: some_base/image
depends_on:
- db
environment:
DB_TYPE: mysql
DB_HOST: db
DB_PORT: 3306
DB_USER: db_user
DB_PASS: db_user_pass
DB_NAME: db_name
VIRTUAL_HOST: app_host
VIRTUAL_PORT: 3000
restart: unless-stopped
networks:
- proxy
networks:
proxy:
name: proxy
external: true
```
Alternativ kann auch das default netzwerk Überschrieben werden. Dadurch sind alle Container Teil des Netzwerks.
```yaml
networks:
default:
name: proxy
external: true
```
## SQL Proxy
### Initiales Setup
Öffne ein Terminal und führe die `sqlproxy_setup.sh` Datei aus.
Das Script:
1. Installiert den `myssh` befehl nach `$HOME/bin` und fügt diesen ggf zur PATH variable hinzu
2. Erstellt SSH Keys für den SSH Docker Container (wenn diese nicht bereits existieren)
3. Erstellt und Konfiguriert einen Client SSH Key, dessen public Key wird dem SSH Docker Container hinzugefügt
### Starten des Reverse-Proxies
Der SQL Proxy kann über docker compose gestartet werden
```bash
docker compose -f docker-compose.yml -f docker-compose-sqlproxy.yml up -d
```
### Hinzufügen von DB Docker Containern
Container werden automatisch vom reverse proxy/host manager aufgegriffen wenn sie:
1. Die Umgebungsvariable `DB_VHOST` gesetzt haben.
2. Im gleichen Docker-Netzwek (Default: `proxy`) sind.
### myssh cli
Der SQL Proxy Client hat folgende Optionen:
```bash
ls: Gibt eine Liste an verfügbaren DB Hosts zurück
connect $DB_HOST [-u $USERNAME ] [-p $PASSWORD]: Erstellt einen Tunnel zum DB Host, wenn Nutzername und Passwort angegeben werden wird eine DB Anwendung geöffnet
disconnect: schließt die SSH Multiplex Session und damit auch alle aktuellen Verbindungen
```
#### myssh Umgebungsvariablen
- `SQL_PROXY_HOST`
- DEFAULT: `"localhost"`
- DESCRIPTION: Setzt den Target Proxy Host
- `SQL_PROXY_DB_PORT`
- DEFAULT: `"3306"`
- DESCRIPTION: Setzt den DB Host Target Port
- `SQL_CLI_TEMPLATE`
- DEFAULT LINUX: `'mysql --protocol=TCP -u $MYSQL_USERNAME -p$MYSQL_PASSWORD -h localhost -P 3306'`
- DEFAULT MACOS: `'open \"mysql://$MYSQL_USERNAME:$MYSQL_PASSWORD@localhost:3306\" -a \"Sequel Ace\"'`
- DESCRIPTION: Setzt den auszuführenden Datenbank-Client Befehl
## Hostman Umgebugsvariablen (für docker compose)
- `DOCKER_SOCK_PATH`
- DEFAULT: `"/tmp/docker.sock"`
- DESCRIPTION: Docker Socket Pfad
- `NETWORK_NAME`
- DEFAULT: `"proxy"`
- DESCRIPTION: Docker netzwerk in dem nach Containern gesucht wird
- `RESOLVE_DOCKERHOST`
- DEFAULT: `false`
- DESCRIPTION: Setzt ob IP Addressen in der hosts Datei auf die der Docker Container (true) oder 127.0.0.1 (false) aufgelöst werden.
- `HOST_CONF_PATH`
- DEFAULT: `"/tmp/hosts"`
- DESCRIPTION: hosts Datei-Pfad
- `DOCKER_HOSTNAME_VAR`
- DEFAULT: `"VIRTUAL_HOST"`
- DESCRIPTION: Docker Container Umgebungsvariable die den Hostnamen bestimmt