mirror of
https://github.com/d0zingcat/ghost-docker.git
synced 2026-05-13 23:16:44 +00:00
This will only have an effect when the version isn't set in the .env file and we have it in the .env.example but did still need updating as the fallback.
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:-6.0.0-rc.0-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:
|