115 lines
3.7 KiB
Markdown
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
|