Rozdział 6 · 6.2
Katalog roboczy z compose.yaml, .env i Caddy
Za pomocą docker compose opisują Państwo wszystkie kontenery w jednym pliku. W tym podręczniku wszystkie aplikacje znajdują się w katalogu /srv/diensten, a Caddy pełni rolę bramy wejściowej, która zapewnia https dla każdej aplikacji. Przepisy z rozdziału 7 za każdym razem dodają tu kolejny fragment. Jak compose współpracuje z zaporą sieciową, opisujemy w artykule Docker compose i zapora sieciowa z kursu VPS i administrowanie serwerem Linux.
Katalog i pliki
anna@web1:~$ sudo mkdir -p /srv/diensten
anna@web1:~$ cd /srv/diensten
anna@web1:/srv/diensten$ sudo nano compose.yaml
Prosimy zacząć od samego Caddy:
services:
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- caddy-data:/data
- caddy-config:/config
volumes:
caddy-data:
caddy-config:
A plik Caddyfile w tym samym katalogu:
{
email beheer@example.com
}
Wiersz version: na początku pliku nie jest już potrzebny; można go jeszcze spotkać w starszych przykładach.
Uruchamianie i podgląd
anna@web1:/srv/diensten$ sudo docker compose up -d
anna@web1:/srv/diensten$ sudo docker compose ps
anna@web1:/srv/diensten$ sudo docker compose logs -f caddy
up -d uruchamia wszystko w tle. Klawiszami Ctrl+C kończą Państwo podgląd logów; kontenery nadal działają. Jeśli zmienią Państwo plik Caddyfile, prosimy wczytać go ponownie poleceniem:
anna@web1:/srv/diensten$ sudo docker compose exec -w /etc/caddy caddy caddy reload
Sekrety w .env
Haseł i tokenów nie umieszczają Państwo w compose.yaml, lecz w pliku .env w tym samym katalogu. W compose.yaml odwołują się Państwo do nich za pomocą ${NAAM}.
anna@web1:/srv/diensten$ sudo nano .env
anna@web1:/srv/diensten$ sudo chmod 600 .env
Prosimy nigdy nie umieszczać pliku .env w Git i go nie udostępniać.
Caddy działa już jako usługa na serwerze?
Jeśli zainstalowali Państwo Caddy lub nginx tak jak w rozdziale 5, porty 80 i 443 są już zajęte. Prosimy wybrać jedną z dwóch możliwości:
- Wyłączyć usługę na serwerze (
sudo systemctl disable --now caddylubnginx) i przenieść swoje strony do pliku Caddyfile w/srv/diensten. Takie założenie przyjmują przepisy. - Albo pozostawić usługę na serwerze, pominąć Caddy w compose i publikować każdą aplikację wyłącznie na
127.0.0.1(zob. Docker i zapora sieciowa: bezpieczne publikowanie portów). Wtedy dla każdej aplikacji tworzą Państwo reverse proxy tak jak w Aplikacja za reverse proxy.
