1
0

Complete stack

This commit is contained in:
2026-02-26 14:45:43 +01:00
commit 74e3024833
8 changed files with 161 additions and 0 deletions

2
.env.example Normal file
View File

@@ -0,0 +1,2 @@
DEV_URL=localhost
EXTERNAL_NETWORK=traefiknet

5
.gitignore vendored Normal file
View File

@@ -0,0 +1,5 @@
.env
portainer/*
!portainer/.gitkeep
traefik/logs/*
!traefik/logs/.gitkeep

62
README.md Normal file
View File

@@ -0,0 +1,62 @@
# Local Docker Management - Traefik & Portainer
Docker stack s reverse proxy (Traefik) a webovým rozhraním pro správu kontejnerů (Portainer).
## Požadavky
- Docker & Docker Compose
- Nastavené DNS záznamy nebo `/etc/hosts`
## Instalace
1. **Konfigurace prostředí**
```bash
# Přejmenujte soubor .env.example na .env
mv .env.example .env
# Upravte .env soubor dle svých nastavení
DEV_URL=dev.linuxak.com
EXTERNAL_NETWORK=traefiknet
```
2. **Spuštění**
```bash
./run up # Spustit stack
./run restart # Restartovat stack
./run down # Zastavit stack
```
## Přístup ke službám
| Služba | URL |
|--------|-----|
| Traefik Dashboard | http://traefik.dev.linuxak.com |
| Portainer | http://portainer.dev.linuxak.com |
## Struktura
```
Stack/
├── docker-compose.yml # Definice služeb
├── run # Skript pro správu
├── .env # Konfigurace prostředí
├── traefik/ # Traefik konfigurace a logy
└── portainer/ # Portainer data
```
## Persistence
Složka `portainer` je persistentním úložištěm pro službu Portainer a všechna data této služby zůstanou uložená i po vypnutí stacku, dokud je ručně nesmažete.
## Přidání nové služby
Do vašeho `docker-compose.yml` přidejte Traefik labels:
```yaml
labels:
- "traefik.enable=true"
- "traefik.http.routers.myapp.rule=Host(`myapp.${DEV_URL}`)"
- "traefik.http.routers.myapp.entrypoints=web"
networks:
- ${EXTERNAL_NETWORK}
```

58
docker-compose.yml Normal file
View File

@@ -0,0 +1,58 @@
services:
traefik:
image: traefik:latest
container_name: traefik
restart: always
command:
- "--global.checknewversion=false"
- "--log.level=INFO"
- "--log.filepath=/logs/traefik.log"
- "--accesslog=true"
- "--accesslog.filepath=/logs/access.log"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.forwardedheaders.trustedips=0.0.0.0/0"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.websecure.forwardedheaders.trustedips=0.0.0.0/0"
- "--api.dashboard=true"
- "--providers.docker=true"
- "--providers.docker.endpoint=unix:///var/run/docker.sock"
- "--providers.docker.network=${EXTERNAL_NETWORK}"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.watch=true"
- "--providers.file.filename=/etc/traefik/traefik_dynamic.yml"
- "--providers.file.watch=true"
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.${DEV_URL}`)"
- "traefik.http.routers.traefik-dashboard.entrypoints=web"
- "traefik.http.routers.traefik-dashboard.service=api@internal"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik/traefik_dynamic.yml:/etc/traefik/traefik_dynamic.yml:ro
- ./traefik/logs:/logs
networks:
- ${EXTERNAL_NETWORK}
portainer:
image: portainer/portainer-ce:latest
container_name: portainer
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./portainer:/data
labels:
- "traefik.enable=true"
- "traefik.http.routers.portainer.rule=Host(`portainer.${DEV_URL}`)"
- "traefik.http.routers.portainer.entrypoints=web"
- "traefik.http.routers.portainer.service=portainer"
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
networks:
- ${EXTERNAL_NETWORK}
networks:
traefiknet:
name: ${EXTERNAL_NETWORK}
external: true

0
portainer/.gitkeep Normal file
View File

34
run Executable file
View File

@@ -0,0 +1,34 @@
#!/bin/zsh
# Load parameters
ACTION=$1
ENV_FILE=".env"
# Check if .env file exists
if [[ ! -f $ENV_FILE ]]; then
echo "Error: $ENV_FILE file not found!"
echo "Please create $ENV_FILE file with the following variables:"
echo "DEV_URL=your.domain.com"
echo "EXTERNAL_NETWORK=your_network_name"
exit 1
fi
# Load environment variables
source $ENV_FILE
case "$ACTION" in
"up")
docker network create $EXTERNAL_NETWORK > /dev/null 2>&1 || true
docker compose up -d
;;
"restart")
docker compose restart
;;
"down")
docker compose down
;;
*)
echo "Usage: $0 [up|restart|down]"
exit 1
;;
esac

0
traefik/logs/.gitkeep Normal file
View File

View File