mirror of
https://github.com/d0zingcat/ghost-docker.git
synced 2026-05-13 15:09:34 +00:00
Developer experiments used to be required in v5 but as we've switched to v6 they are no longer required to enable activitypub and traffic analytics.
208 lines
6.3 KiB
YAML
208 lines
6.3 KiB
YAML
---
|
|
# yaml-language-server: $schema=https://raw.githubusercontent.com/compose-spec/compose-spec/main/schema/compose-spec.json
|
|
services:
|
|
caddy:
|
|
image: caddy:2.10.0-alpine@sha256:e2e3a089760c453bc51c4e718342bd7032d6714f15b437db7121bfc2de2654a6
|
|
restart: always
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
environment:
|
|
DOMAIN: ${DOMAIN:?DOMAIN environment variable is required}
|
|
ADMIN_DOMAIN: ${ADMIN_DOMAIN:-}
|
|
ACTIVITYPUB_TARGET: ${ACTIVITYPUB_TARGET:-https://ap.ghost.org}
|
|
volumes:
|
|
- ./caddy:/etc/caddy
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
depends_on:
|
|
- ghost
|
|
networks:
|
|
- ghost_network
|
|
|
|
ghost:
|
|
# Do not alter this without updating the Tinybird Sync container as well
|
|
image: ghost:${GHOST_VERSION:-6.0.0-rc.0-alpine}
|
|
restart: always
|
|
expose:
|
|
- "127.0.0.1:${GHOST_PORT:-2368}:2368"
|
|
# This is required to import current config when migrating
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
NODE_ENV: production
|
|
url: https://${DOMAIN:?DOMAIN environment variable is required}
|
|
database__client: mysql
|
|
database__connection__host: db
|
|
database__connection__user: ${DATABASE_USER:-ghost}
|
|
database__connection__password: ${DATABASE_PASSWORD:?DATABASE_PASSWORD environment variable is required}
|
|
database__connection__database: ghost
|
|
tinybird__tracker__endpoint: https://${DOMAIN:?DOMAIN environment variable is required}/.ghost/analytics/api/v1/page_hit
|
|
tinybird__adminToken: ${TINYBIRD_ADMIN_TOKEN:-}
|
|
tinybird__workspaceId: ${TINYBIRD_WORKSPACE_ID:-}
|
|
tinybird__tracker__datasource: analytics_events
|
|
tinybird__stats__endpoint: ${TINYBIRD_API_URL:-https://api.tinybird.co}
|
|
volumes:
|
|
- ${UPLOAD_LOCATION:-./data/ghost}:/var/lib/ghost/content
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
tinybird-sync:
|
|
condition: service_completed_successfully
|
|
required: false
|
|
tinybird-deploy:
|
|
condition: service_completed_successfully
|
|
required: false
|
|
activitypub:
|
|
condition: service_started
|
|
required: false
|
|
networks:
|
|
- ghost_network
|
|
|
|
db:
|
|
image: mysql:8.0.42@sha256:4445b2668d41143cb50e471ee207f8822006249b6859b24f7e12479684def5d9
|
|
restart: always
|
|
expose:
|
|
- "3306"
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: ${DATABASE_ROOT_PASSWORD:?DATABASE_ROOT_PASSWORD environment variable is required}
|
|
MYSQL_USER: ${DATABASE_USER:-ghost}
|
|
MYSQL_PASSWORD: ${DATABASE_PASSWORD:?DATABASE_PASSWORD environment variable is required}
|
|
MYSQL_DATABASE: ghost
|
|
MYSQL_MULTIPLE_DATABASES: activitypub
|
|
volumes:
|
|
- ${MYSQL_DATA_LOCATION:-./data/mysql}:/var/lib/mysql
|
|
- ./mysql-init:/docker-entrypoint-initdb.d
|
|
healthcheck:
|
|
test: mysqladmin ping -p$$MYSQL_ROOT_PASSWORD -h 127.0.0.1
|
|
interval: 1s
|
|
start_period: 30s
|
|
start_interval: 10s
|
|
retries: 120
|
|
networks:
|
|
- ghost_network
|
|
|
|
traffic-analytics:
|
|
image: ghost/traffic-analytics:1.0.3@sha256:f9122d48b37182464fd698afd5a1d43c4b5d16fb53089f3794a401666970e4b3
|
|
restart: always
|
|
expose:
|
|
- "3000"
|
|
volumes:
|
|
- traffic_analytics_data:/data
|
|
environment:
|
|
NODE_ENV: production
|
|
PROXY_TARGET: ${TINYBIRD_API_URL:-https://api.tinybird.co}/v0/events
|
|
SALT_STORE_TYPE: ${SALT_STORE_TYPE:-file}
|
|
SALT_STORE_FILE_PATH: /data/salts.json
|
|
TINYBIRD_TRACKER_TOKEN: ${TINYBIRD_TRACKER_TOKEN:-}
|
|
LOG_LEVEL: debug
|
|
profiles: [analytics]
|
|
networks:
|
|
- ghost_network
|
|
|
|
activitypub:
|
|
image: ghcr.io/tryghost/activitypub:1.0.1@sha256:eafd011c93ced77e51a59358600ebc26cc007f3f61a4be8d759d43df21fe48c4
|
|
restart: always
|
|
expose:
|
|
- "8080"
|
|
volumes:
|
|
- ${UPLOAD_LOCATION:-./data/ghost}:/opt/activitypub/content
|
|
environment:
|
|
NODE_ENV: production
|
|
PORT: 8080
|
|
MYSQL_HOST: db
|
|
MYSQL_USER: ${DATABASE_USER:-ghost}
|
|
MYSQL_PASSWORD: ${DATABASE_PASSWORD:?DATABASE_PASSWORD environment variable is required}
|
|
MYSQL_DATABASE: activitypub
|
|
ALLOW_PRIVATE_ADDRESS: true
|
|
USE_MQ: false
|
|
LOCAL_STORAGE_PATH: /opt/activitypub/content/images/activitypub
|
|
LOCAL_STORAGE_HOSTING_URL: https://${DOMAIN}/content/images/activitypub
|
|
depends_on:
|
|
- db
|
|
profiles: [activitypub]
|
|
networks:
|
|
- ghost_network
|
|
|
|
# Suporting Services
|
|
|
|
tinybird-login:
|
|
build:
|
|
context: ./tinybird
|
|
dockerfile: Dockerfile
|
|
working_dir: /home/tinybird
|
|
command: /usr/local/bin/tinybird-login
|
|
volumes:
|
|
- tinybird_home:/home/tinybird
|
|
- tinybird_files:/data/tinybird
|
|
profiles: [analytics]
|
|
networks:
|
|
- ghost_network
|
|
tty: false
|
|
restart: no
|
|
|
|
tinybird-sync:
|
|
# Do not alter this without updating the Ghost container as well
|
|
image: ghost:${GHOST_VERSION:-5-alpine}
|
|
command: >
|
|
sh -c "
|
|
if [ -d /var/lib/ghost/current/core/server/data/tinybird ]; then
|
|
rm -rf /data/tinybird/*;
|
|
cp -rf /var/lib/ghost/current/core/server/data/tinybird/* /data/tinybird/;
|
|
echo 'Tinybird files synced into shared volume.';
|
|
else
|
|
echo 'Tinybird source directory not found.';
|
|
fi
|
|
"
|
|
volumes:
|
|
- tinybird_files:/data/tinybird
|
|
depends_on:
|
|
tinybird-login:
|
|
condition: service_completed_successfully
|
|
networks:
|
|
- ghost_network
|
|
profiles: [analytics]
|
|
restart: no
|
|
|
|
tinybird-deploy:
|
|
build:
|
|
context: ./tinybird
|
|
dockerfile: Dockerfile
|
|
working_dir: /data/tinybird
|
|
command: >
|
|
sh -c "
|
|
tb-wrapper --cloud deploy
|
|
"
|
|
volumes:
|
|
- tinybird_home:/home/tinybird
|
|
- tinybird_files:/data/tinybird
|
|
depends_on:
|
|
tinybird-sync:
|
|
condition: service_completed_successfully
|
|
profiles: [analytics]
|
|
networks:
|
|
- ghost_network
|
|
tty: true
|
|
|
|
activitypub-migrate:
|
|
image: ghcr.io/tryghost/activitypub-migrations:1.0.1@sha256:b9379134c3b2eeb12cfeadd6851d1ca6fbbe852147195676414f165b0a6e1f93
|
|
environment:
|
|
MYSQL_DB: mysql://${DATABASE_USER:-ghost}:${DATABASE_PASSWORD:?DATABASE_PASSWORD environment variable is required}@tcp(db:3306)/activitypub
|
|
networks:
|
|
- ghost_network
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
profiles: [activitypub]
|
|
restart: no
|
|
|
|
volumes:
|
|
caddy_data:
|
|
caddy_config:
|
|
tinybird_files:
|
|
tinybird_home:
|
|
traffic_analytics_data:
|
|
|
|
networks:
|
|
ghost_network:
|