No description
etc/ssh | ||
script | ||
templates | ||
.gitignore | ||
docker-compose-sqlproxy.yml | ||
docker-compose.yml | ||
Dockerfile | ||
README.md | ||
sqlproxy_setup.sh |
Starten des Reverse-Proxies
Der Proxy kann über docker compose gestartet werden
docker compose up -d
Hinzufügen von Docker Containern
Container werden automatisch vom reverse proxy/host manager aufgegriffen wenn sie:
- Die Umgebungsvariable
VIRTUAL_HOST
gesetzt haben. - 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.
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.
networks:
default:
name: proxy
external: true
SQL Proxy
Initiales Setup
Öffne ein Terminal und führe die sqlproxy_setup.sh
Datei aus.
Das Script:
- Installiert den
myssh
befehl nach$HOME/bin
und fügt diesen ggf zur PATH variable hinzu - Erstellt SSH Keys für den SSH Docker Container (wenn diese nicht bereits existieren)
- 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
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:
- Die Umgebungsvariable
DB_VHOST
gesetzt haben. - Im gleichen Docker-Netzwek (Default:
proxy
) sind.
myssh cli
Der SQL Proxy Client hat folgende Optionen:
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
- DEFAULT:
SQL_PROXY_DB_PORT
- DEFAULT:
"3306"
- DESCRIPTION: Setzt den DB Host Target Port
- DEFAULT:
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
- DEFAULT LINUX:
Hostman Umgebugsvariablen (für docker compose)
DOCKER_SOCK_PATH
- DEFAULT:
"/tmp/docker.sock"
- DESCRIPTION: Docker Socket Pfad
- DEFAULT:
NETWORK_NAME
- DEFAULT:
"proxy"
- DESCRIPTION: Docker netzwerk in dem nach Containern gesucht wird
- DEFAULT:
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.
- DEFAULT:
HOST_CONF_PATH
- DEFAULT:
"/tmp/hosts"
- DESCRIPTION: hosts Datei-Pfad
- DEFAULT:
DOCKER_HOSTNAME_VAR
- DEFAULT:
"VIRTUAL_HOST"
- DESCRIPTION: Docker Container Umgebungsvariable die den Hostnamen bestimmt
- DEFAULT: