autoscript/templates/mastodon/docker-compose.yml
Paweł Orzech bc67e9b21b feat(core): Implementacja funkcji z roadmapy (v4.0)
1 Wprowadzono implementację kluczowych funkcji z roadmapy, przekształcając AutoScript w kompletne rozwiązanie do wdrażania i
      zarządzania platformą Mastodon.
    2
    3 Kluczowe zaimplementowane funkcje:
    4
    5 - **Automatyzacja Wdrożenia Mastodona**: Komenda `deploy_mastodon` została w pełni zaimplementowana. Automatyzuje ona cały
      proces: od generowania sekretów i plików konfiguracyjnych, przez uruchomienie kontenerów, aż po wykonanie migracji bazy danych.
    6
    7 - **Dynamiczne Odkrywanie Usług**: Prometheus został skonfigurowany do automatycznego odkrywania i monitorowania kontenerów na
      podstawie etykiet Docker. Eliminuje to potrzebę ręcznej edycji statycznej listy celów i upraszcza dodawanie nowych usług.
    8
    9 - **Centralne Logowanie Hosta**: Promtail zbiera teraz logi nie tylko z kontenerów Docker, ale również z kluczowych plików
      systemowych w `/var/log`. Umożliwia to korelację zdarzeń aplikacyjnych i systemowych w jednym miejscu (Grafana/Loki).
   10
   11 - **Rozbudowa Architektury**: Dodano nowe szablony dla Mastodona oraz zaktualizowano istniejące dla stosu monitoringu. Skrypt
      `start.sh` został rozbudowany o nową logikę i komendy.
   12
   13 Ta wersja stanowi kulminację dotychczasowych prac, dostarczając w pełni funkcjonalne, zautomatyzowane i gotowe do użycia
      narzędzie.
2025-08-03 13:04:31 +02:00

84 lines
2 KiB
YAML

version: '3'
services:
db:
restart: always
image: postgres:${POSTGRES_VER}
shm_size: 256mb
networks:
- internal_network
healthcheck:
test: ['CMD', 'pg_isready', '-U', 'postgres']
volumes:
- postgres_data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
redis:
restart: always
image: redis:7-alpine
networks:
- internal_network
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
volumes:
- redis_data:/data
web:
image: tootsuite/mastodon
restart: always
env_file: .env.production
command: bundle exec rails s -p 3000
networks:
- internal_network
- external_network
healthcheck:
# prettier-ignore
test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1']
ports:
- '127.0.0.1:3000:3000'
depends_on:
- db
- redis
labels:
- traefik.enable=true
- traefik.http.routers.mastodon-web.rule=Host(`${PRIMARY_DOMAIN}`)
- traefik.http.routers.mastodon-web.entrypoints=websecure
- traefik.http.routers.mastodon-web.tls.certresolver=le-dns
streaming:
image: tootsuite/mastodon
restart: always
env_file: .env.production
command: node ./streaming
networks:
- internal_network
- external_network
depends_on:
- db
- redis
labels:
- traefik.enable=true
- traefik.http.routers.mastodon-streaming.rule=Host(`${PRIMARY_DOMAIN}`) && PathPrefix(`/api/v1/streaming`)
- traefik.http.routers.mastodon-streaming.entrypoints=websecure
- traefik.http.routers.mastodon-streaming.tls.certresolver=le-dns
sidekiq:
image: tootsuite/mastodon
restart: always
env_file: .env.production
command: bundle exec sidekiq
depends_on:
- db
- redis
networks:
- internal_network
volumes:
postgres_data:
redis_data:
networks:
external_network:
external: true
name: traefik_proxy
internal_network: {}