148 lines
5.5 KiB
YAML
148 lines
5.5 KiB
YAML
services:
|
|
|
|
ghost:
|
|
image: ghost:5-alpine
|
|
container_name: ghost
|
|
restart: unless-stopped
|
|
ports:
|
|
- 2368 #- 8080:2368
|
|
environment:
|
|
# see https://ghost.org/docs/config/#configuration-options
|
|
database__client: mysql
|
|
database__connection__host: ghost_db
|
|
database__connection__user: root
|
|
database__connection__password: example
|
|
database__connection__database: ghost
|
|
url: https://news.matitos.org
|
|
# contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired)
|
|
#NODE_ENV: development
|
|
volumes:
|
|
- ./docker_data/ghost:/var/lib/ghost/content
|
|
labels: # Reverse proxy sample
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.news.rule=Host(`news.matitos.org`)"
|
|
- "traefik.http.routers.news.entrypoints=websecure"
|
|
- "traefik.http.routers.news.tls.certresolver=myresolvercd"
|
|
- "traefik.http.services.news.loadbalancer.server.port=2368"
|
|
networks:
|
|
- default # This network
|
|
- docker_default # Reverse proxy network
|
|
|
|
ghost_db:
|
|
image: mysql:8.0
|
|
container_name: ghost_db
|
|
restart: unless-stopped
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: example
|
|
volumes:
|
|
- ./docker_data/ghost_db:/var/lib/mysql
|
|
|
|
plausible_db:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
container_name: plausible_db
|
|
volumes:
|
|
- ./docker_data/plausible_db_data:/var/lib/postgresql/data
|
|
environment:
|
|
- POSTGRES_PASSWORD=postgres
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
start_period: 1m
|
|
|
|
plausible_events_db:
|
|
image: clickhouse/clickhouse-server:24.12-alpine
|
|
restart: unless-stopped
|
|
container_name: plausible_events_db
|
|
volumes:
|
|
- ./docker_data/event-data:/var/lib/clickhouse
|
|
- ./docker_data/event-logs:/var/log/clickhouse-server
|
|
- ./clickhouse/logs.xml:/etc/clickhouse-server/config.d/logs.xml:ro
|
|
# This makes ClickHouse bind to IPv4 only, since Docker doesn't enable IPv6 in bridge networks by default.
|
|
# Fixes "Listen [::]:9000 failed: Address family for hostname not supported" warnings.
|
|
- ./clickhouse/ipv4-only.xml:/etc/clickhouse-server/config.d/ipv4-only.xml:ro
|
|
# This makes ClickHouse consume less resources, which is useful for small setups.
|
|
# https://clickhouse.com/docs/en/operations/tips#using-less-than-16gb-of-ram
|
|
- ./clickhouse/low-resources.xml:/etc/clickhouse-server/config.d/low-resources.xml:ro
|
|
ulimits:
|
|
nofile:
|
|
soft: 262144
|
|
hard: 262144
|
|
environment:
|
|
- CLICKHOUSE_SKIP_USER_SETUP=1
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget --no-verbose --tries=1 -O - http://127.0.0.1:8123/ping || exit 1"]
|
|
start_period: 1m
|
|
|
|
plausible:
|
|
image: ghcr.io/plausible/community-edition:v3.0.1
|
|
restart: unless-stopped
|
|
container_name: plausible
|
|
command: sh -c "/entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
|
|
depends_on:
|
|
plausible_db:
|
|
condition: service_healthy
|
|
plausible_events_db:
|
|
condition: service_healthy
|
|
#volumes:
|
|
# - ./docker_data/plausible_data:/var/lib/plausible # https://github.com/plausible/community-edition/issues/163
|
|
ulimits:
|
|
nofile:
|
|
soft: 65535
|
|
hard: 65535
|
|
ports:
|
|
- 8000 # :8000
|
|
environment:
|
|
- TMPDIR=/var/lib/plausible/tmp
|
|
# required: https://github.com/plausible/community-edition/wiki/configuration#required
|
|
#- BASE_URL=${BASE_URL}
|
|
#- SECRET_KEY_BASE=${SECRET_KEY_BASE}
|
|
- BASE_URL=https://plausible.matitos.org
|
|
- SECRET_KEY_BASE=KKfwEjeK3Xp6NdH7eCJ2szWliTueiB0vcCT4XpHvEE8ZHgvRg0Vle90wOrETQZoC
|
|
# optional: https://github.com/plausible/community-edition/wiki/configuration#optional
|
|
# registration: https://github.com/plausible/community-edition/wiki/configuration#registration
|
|
- TOTP_VAULT_KEY
|
|
- DISABLE_REGISTRATION
|
|
- ENABLE_EMAIL_VERIFICATION
|
|
# web: https://github.com/plausible/community-edition/wiki/configuration#web
|
|
- HTTP_PORT=8000
|
|
- HTTPS_PORT
|
|
# databases: https://github.com/plausible/community-edition/wiki/configuration#database
|
|
- DATABASE_URL
|
|
- CLICKHOUSE_DATABASE_URL
|
|
# Google: https://github.com/plausible/community-edition/wiki/configuration#google
|
|
- GOOGLE_CLIENT_ID
|
|
- GOOGLE_CLIENT_SECRET
|
|
# geolocation: https://github.com/plausible/community-edition/wiki/configuration#ip-geolocation
|
|
- IP_GEOLOCATION_DB
|
|
- GEONAMES_SOURCE_FILE
|
|
- MAXMIND_LICENSE_KEY
|
|
- MAXMIND_EDITION
|
|
# email: https://github.com/plausible/community-edition/wiki/configuration#email
|
|
- MAILER_ADAPTER
|
|
- MAILER_EMAIL
|
|
- MAILER_NAME
|
|
- SMTP_HOST_ADDR
|
|
- SMTP_HOST_PORT
|
|
- SMTP_USER_NAME
|
|
- SMTP_USER_PWD
|
|
- SMTP_HOST_SSL_ENABLED
|
|
- POSTMARK_API_KEY
|
|
- MAILGUN_API_KEY
|
|
- MAILGUN_DOMAIN
|
|
- MAILGUN_BASE_URI
|
|
- MANDRILL_API_KEY
|
|
- SENDGRID_API_KEY
|
|
labels: # Reverse proxy sample
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.plausible.rule=Host(`plausible.matitos.org`)"
|
|
- "traefik.http.routers.plausible.entrypoints=websecure"
|
|
- "traefik.http.routers.plausible.tls.certresolver=myresolvercd"
|
|
- "traefik.http.services.plausible.loadbalancer.server.port=8000"
|
|
networks:
|
|
- default # This network
|
|
- docker_default # Reverse proxy network
|
|
|
|
networks:
|
|
docker_default:
|
|
external: true
|