thulium_drake.docker_services
Katalog usług Docker
Ta rola zawiera zbiór usług działających w Docker Swarm, każda usługa jest podzielona na swoje (zestawy) sieci. Wszystkie trwałe dane są zamontowane w kontenerze, co umożliwia przechowywanie ich na wspólnym nośniku, takim jak NFS lub GlusterFS.
Obecnie katalog zawiera:
- Drone: kontroler CI/CD z agentami (https://github.com/drone/drone)
- Drawio: darmowe, samodzielnie hostowane oprogramowanie do tworzenia diagramów, takich jak diagramy przepływu, diagramy procesów, schematy organizacyjne, UML, ER i diagramy sieciowe.
- Gitea: serwer Git oparty na Go z interfejsem webowym (https://github.com/go-gitea/gitea)
- Portainer: interfejs zarządzania Dockerem (https://github.com/portainer/portainer)
- AWX: upstream Ansible Tower (https://github.com/ansible/awx)
- Traefik: zintegrowany serwer proxy w Dockerze (https://github.com/containous/traefik)
- Rejestr Docker: lokalne przechowywanie obrazów Docker
- Janitor: kontener, który okresowo uruchamia skrypt do czyszczenia wszystkich nieużywanych i przestarzałych zasobów
- Mediawiki: silnik wiki Wikipedia, sprawdź poniższe instrukcje.
- DB_backup: kontener, który okresowo uruchamia skrypt, aby poinformować wszystkie kontenery mariadb o zrzuceniu ich baz danych na wspólny nośnik
- Kanboard: tablica Kanban z interfejsem webowym
- Serwer Factorio: gra, w której zarządzasz zautomatyzowaną fabryką i bronisz jej przed sąsiadami
- Serwer Minecraft: gra, w której możesz budować rzeczy i walczyć z dragonem w Netherze!
- Serwer Teamspeak: serwer VOIP
- Rocket chat: samodzielnie hostowana alternatywa dla Slacka i innych
- PeerTube: darmowa i zdecentralizowana alternatywa dla platform wideo
- VaultWarden: darmowy serwer dla menedżera haseł Bitwarden
Ta rola ma kilka obowiązkowych części, które zostaną zainstalowane, na których (większość, jeśli nie wszystkie) inne usługi polegają:
- Portainer
- Janitor
- Traefik
Wdrożenie
Aby korzystać z usług w tym katalogu, wykonaj następujące kroki:
- Zainstaluj kolekcję
community.docker
na swoim kontrolerze Ansible - Zainstaluj Docker (wskazówka: użyj roli Docker Jeffa Geerlinga)
- Utwórz {{ docker_data_dir }}, najlepiej na współdzielonym nośniku
- Skopiuj
defaults/main.yml
i skonfiguruj go - Uruchom rolę z plikiem playbook, na przykład:
---
- hosts: 'docker'
roles:
- 'docker_services'
Uzyskiwanie dostępu do usług
Po zainstalowaniu wszystkie usługi będą dostępne pod następującą nazwą:
https://{{ service_app_name }}.{{ traefik_domain }}
Co odpowiada czemuś takiemu jak https://portainer.dckr.example.com
Dodatkowe działania
Niektóre usługi wymagają dodatkowych działań, zanim będą działały, poniżej znajdują się instrukcje dotyczące każdej usługi, jeśli wymagają dodatkowej konfiguracji.
Mediawiki
Upewnij się, że stworzysz lokalną kopię pliku LocalSettings.php w {{ docker_data_dir }}/mediawiki_data, ta kopia zostanie zamontowana wewnątrz kontenera.
Ten playbook sprawdzi, czy plik jest obecny, ale nie zmieni jego zawartości.
DB Backup
Serwis DB backup jest dość prosty, będzie tylko kopią zapasową wszystkich kontenerów, które pasują do filtrów:
- nazwa kontenera kończy się na mariadb
Nie będzie zarządzać twoimi kopiami zapasowymi, stworzy backup.sql w {{ docker_data_dir }}/{{ app_name }}_db i nadpisze go za każdym razem.
PeerTube
Kiedy umieszczasz inny serwer proxy przed hostem Docker, upewnij się, że ustawiasz dodatkowe nagłówki. Poniżej znajduje się przykładowa konfiguracja dla NginX:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name peertube.example.com;
ssl_certificate /etc/ssl/peertube.example.com_fullchain.cer;
ssl_certificate_key /etc/ssl/peertube.example.com.key;
location / {
proxy_pass https://peertube.int.example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
}
}
Matomo
Pierwsza konfiguracja Matomo jest trochę skomplikowana, ponieważ wymaga trwałego pliku config.ini.php, aby działał po restarcie.
Jednak oprogramowanie nie radzi sobie dobrze z pustym lub niekompletnym plikiem konfiguracyjnym.
Do tej pory udało mi się go pomyślnie wdrożyć w następujący sposób:
- Wdroż Matomo z listą zadań
matomo_setup
- Wejdź do kontenera Docker, aby pobrać konfigurację
docker exec -it containerid /bin/bash
cat /var/www/html/config/config.ini.php
# Zapisz zawartość tego pliku w {{ docker_data_dir }}/matomo_data/config.ini.php
- Wdroż Matomo z „zwykłą” listą zadań
matomo
ansible-galaxy install thulium_drake.docker_services