docker_services
Каталог сервисов Docker
Эта роль содержит набор сервисов, которые работают на Docker Swarm. Каждый сервис сегментирован в своей (группе) сети. Все постоянные хранилища подключены к контейнеру, что позволяет размещать данные на общем хранилище, таком как NFS или GlusterFS.
В каталоге в настоящее время находятся:
- Drone: контроллер CI/CD с агентами (https://github.com/drone/drone)
- Drawio: бесплатный софт для создания диаграмм (блок-схем, процессов, организационных структур, UML, ER и сетевых диаграмм).
- Gitea: Git-сервер на Go с веб-интерфейсом (https://github.com/go-gitea/gitea)
- Portainer: интерфейс управления Docker (https://github.com/portainer/portainer)
- AWX: upstream Ansible Tower (https://github.com/ansible/awx)
- Traefik: интегрированный обратный прокси для Docker (https://github.com/containous/traefik)
- Docker registry: локальное хранилище образов Docker
- Janitor: контейнер, который периодически запускает скрипт для очистки неиспользуемого и устаревшего контента
- Mediawiki: движок вики Википедии, проверьте инструкции ниже.
- DB_backup: контейнер, который периодически запускает скрипт, чтобы попросить все контейнеры mariadb сделать дамп своих баз данных на общее хранилище.
- Kanboard: Канбан-доска с веб-интерфейсом
- Factorio сервер: игра, где вы управляете автоматизированным заводом и защищаете его от соседей.
- Minecraft сервер: игра, где вы можете строить вещи и сражаться с драконом в Нижнем мире!
- Teamspeak сервер: VOIP сервер
- Rocket chat: саморазмещенная альтернатива Slack и другим
- PeerTube: бесплатная и децентрализованная альтернатива видео платформам
- VaultWarden: бесплатный альтернативный сервер для менеджера паролей Bitwarden
Эта роль имеет несколько обязательных частей, от которых зависят (большинство, если не все) другие сервисы:
- Portainer
- Janitor
- Traefik
Развертывание
Чтобы использовать сервисы из этого каталога, выполните следующие действия:
- Установите коллекцию
community.docker
на своем контроллере Ansible - Установите Docker (совет: используйте роль Docker от Джеффа Гирлинга)
- Создайте {{ docker_data_dir }}, желательно на общем хранилище
- Скопируйте
defaults/main.yml
и настройте его - Запустите роль с помощью плейбука, например:
---
- hosts: 'docker'
roles:
- 'docker_services'
Доступ к сервисам
После развертывания все сервисы будут доступны по следующему имени:
https://{{ service_app_name }}.{{ traefik_domain }}
Это будет выглядеть как https://portainer.dckr.example.com
Дополнительные действия
Некоторые сервисы требуют дополнительных действий перед тем, как они начнут работать. Ниже приведены инструкции для каждого сервиса, если требуется дополнительная настройка.
Mediawiki
Пожалуйста, убедитесь, что вы создали локальную копию LocalSettings.php в {{ docker_data_dir }}/mediawiki_data. Эта копия будет смонтирована внутри контейнера.
Этот плейбук проверит наличие файла, но не изменит его содержание.
DB Backup
Служба резервного копирования базы данных довольно проста: она будет делать резервные копии всех контейнеров, которые соответствуют фильтрам:
- имя контейнера заканчивается на mariadb
Она НЕ будет управлять вашими резервными копиями, она создаст backup.sql в {{ docker_data_dir }}/{{ app_name }}_db и будет перезаписывать его каждый раз.
PeerTube
При установке другого обратного прокси перед хостом Docker убедитесь, что вы устанавливаете дополнительные заголовки. Ниже приведен пример конфигурации для 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
Первоначальная настройка Matomo немного сложная, так как она требует наличия постоянного config.ini.php для работы после перезагрузки.
Тем не менее, программа не может обрабатывать пустой или неполный конфигурационный файл должным образом.
До сих пор мне удавалось успешно развернуть его следующим образом:
- Разверните Matomo с помощью задания
matomo_setup
- Войдите в контейнер docker, чтобы получить конфигурацию
docker exec -it containerid /bin/bash
cat /var/www/html/config/config.ini.php
# Сохраните содержимое этого файла в {{ docker_data_dir }}/matomo_data/config.ini.php
- Разверните Matomo с помощью обычного списка заданий
matomo
ansible-galaxy install Thulium-Drake/ansible-role-docker_services