123 lines
4.1 KiB
Markdown
123 lines
4.1 KiB
Markdown
# Local Docker Management
|
|
Cross-platform docker stack pro lokální vývoj s Traefikem a Portainerem
|
|
|
|
### Traefik
|
|
|
|
- Reverzní proxy
|
|
- Validní https pro lokální vývoj (wildcard certifikát s vlastním CA)
|
|
- Přizpůsobitelné nastavení nuceného přesměrování HTTP na HTTPS
|
|
- Připojení dalších (vlastních) služeb pomocí Traefik labels
|
|
- Dashboard pro monitorování a správu routování
|
|
|
|
### Portainer
|
|
|
|
- Webové rozhraní pro správu kontejnerů, obrazů, sítí i volumů
|
|
- Podpora Docker, Compose, Swarm i Kubernetes
|
|
- Persistentní úložiště dat (složka `portainer`)
|
|
|
|
### Požadavky
|
|
|
|
- Docker & Docker Compose
|
|
|
|
## Instalace
|
|
|
|
### 1. Konfigurace prostředí
|
|
|
|
Při prvním spuštění se automaticky spustí průvodce konfigurací, který vytvoří soubor `.env` s potřebnými nastaveními.
|
|
|
|
Budete dotázáni na:
|
|
|
|
- **Development domain name** - doména pro lokální vývoj (výchozí: `dev.linuxak.com`)
|
|
- **External Docker network name** - název externí sítě pro kontejnery (výchozí: `traefiknet`)
|
|
- **HTTPS redirect** - vynucené přesměrování HTTP na HTTPS (výchozí: `true`)
|
|
|
|
> **Tip:** Stačí mačkat Enter pro použití výchozích hodnot, které jsou plně funkční.
|
|
>
|
|
> Přednastavenou doménu `dev.linuxak.com` můžete ponechat - směřuje na IP `127.0.0.1` (váš lokální počítač).
|
|
|
|
### 2. Certifikáty pro HTTPS
|
|
|
|
Traefik používá náš certifikát pro HTTPS komunikaci podepsaný naší vlastní autoritou. Pro správné
|
|
fungování je potřeba importovat CA soubor autority `traefik/certs/linuxakCA.pem` do důvěryhodných certifikátů vašeho operačního systému.
|
|
|
|
**Integrovaný certifikát je platný pro:**
|
|
- `dev.linuxak.com` a všechny subdomény (`*.dev.linuxak.com`)
|
|
- `localhost`
|
|
- IP adresu `127.0.0.1`
|
|
- **Platnost:** do 27. února 2036
|
|
|
|
> **Poznámka:** Pokud změníte `DEV_URL` na jinou doménu než výše uvedené, bude potřeba dodat vlastní
|
|
> certifikát pro HTTPS komunikaci a integrovat jej do Traefiku.
|
|
|
|
### 2.1 Import CA do systému
|
|
|
|
**Linux (CentOS/RHEL/Fedora)**
|
|
```bash
|
|
sudo cp traefik/certs/linuxakCA.pem /etc/pki/ca-trust/source/anchors/linuxak-dev-ca.crt
|
|
sudo update-ca-trust
|
|
```
|
|
|
|
**Linux (Ubuntu/Debian)**
|
|
```bash
|
|
sudo cp traefik/certs/linuxakCA.pem /usr/local/share/ca-certificates/linuxak-dev-ca.crt
|
|
sudo update-ca-certificates
|
|
```
|
|
|
|
**MacOS**
|
|
```bash
|
|
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain traefik/certs/linuxakCA.pem
|
|
```
|
|
|
|
**Windows (PowerShell jako Admin)**
|
|
```bash
|
|
Import-Certificate -FilePath "traefik/certs/linuxakCA.pem" -CertStoreLocation Cert:\LocalMachine\Root
|
|
```
|
|
|
|
### 3. Spuštění
|
|
|
|
```bash
|
|
./run up # Spustit stack (při prvním spuštění se spustí průvodce konfigurací)
|
|
./run restart # Restartovat stack
|
|
./run down # Zastavit stack
|
|
```
|
|
|
|
Při prvním spuštění `./run up` budete provedeni konfigurací - stačí postupovat podle pokynů na obrazovce.
|
|
|
|
## Přístup ke službám
|
|
|
|
| Služba | URL |
|
|
|:------------------|:----------------------------------|
|
|
| Traefik Dashboard | https://traefik.dev.linuxak.com |
|
|
| Portainer | https://portainer.dev.linuxak.com |
|
|
|
|
## Struktura
|
|
|
|
```
|
|
Stack/
|
|
├── docker-compose.yml # Definice služeb
|
|
├── run # Skript pro správu
|
|
├── .env # Konfigurace prostředí (automaticky vytvořen při prvním spuštění)
|
|
├── traefik/ # Traefik konfigurace, certifikáty a logy
|
|
└── portainer/ # Portainer data
|
|
```
|
|
|
|
## Připojení vaší služby do Traefiku
|
|
|
|
Do vašeho `docker-compose.yml` přidejte Traefik labels:
|
|
|
|
`<VASE_URL>` - nahraďte skutečnou doménou své služby
|
|
`<VAS_PORT>` - nahraďte skutečným portem své služby
|
|
`<VASE_EXTERNI_SIT>` - nahraďte skutečným názvem své externí sítě
|
|
|
|
Příklad pro službu s názvem `myapp`:
|
|
|
|
```yaml
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.myapp.rule=Host(`myapp.<VASE_URL>`)"
|
|
- "traefik.http.routers.myapp.entrypoints=websecure"
|
|
- "traefik.http.routers.myapp.tls=true"
|
|
- "traefik.http.services.myapp.loadbalancer.server.port=<VAS_PORT>"
|
|
networks:
|
|
- <VASE_EXTERNI_SIT>
|
|
``` |