mirror of
https://github.com/d0zingcat/ghost-docker.git
synced 2026-05-13 15:09:34 +00:00
169 lines
4.7 KiB
YAML
169 lines
4.7 KiB
YAML
services:
|
|
caddy:
|
|
image: caddy:2-alpine
|
|
restart: always
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
environment:
|
|
DOMAIN: ${DOMAIN:?DOMAIN environment variable is required}
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
depends_on:
|
|
- ghost
|
|
networks:
|
|
- ghost_network
|
|
|
|
ghost:
|
|
image: ghost:5-alpine
|
|
restart: always
|
|
expose:
|
|
- "2368"
|
|
environment:
|
|
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
|
|
enableDeveloperExperiments: true
|
|
tinybird__tracker__endpoint: https://${DOMAIN:?DOMAIN environment variable is required}/.ghost/analytics/tb/web_analytics
|
|
tinybird__tracker__id: ${TINYBIRD_ID:-}
|
|
tinybird__tracker__datasource: analytics_events
|
|
tinybird__tracker__token: ${TINYBIRD_TRACKER_TOKEN:-}
|
|
tinybird__stats__endpoint: ${TINYBIRD_API_URL:-https://api.tinybird.co}
|
|
tinybird__stats__id: ${TINYBIRD_ID:-}
|
|
tinybird__stats__token: ${TINYBIRD_STATS_TOKEN:-}
|
|
volumes:
|
|
- ghost_content:/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
|
|
networks:
|
|
- ghost_network
|
|
|
|
db:
|
|
image: mysql:8.0
|
|
restart: always
|
|
ports:
|
|
- "3306: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:
|
|
- db_data:/var/lib/mysql
|
|
- ./mysql-init:/docker-entrypoint-initdb.d
|
|
healthcheck:
|
|
test: mysql -u${DATABASE_USER:-ghost} -p${DATABASE_PASSWORD:?DATABASE_PASSWORD environment variable is required} ghost -e 'select 1'
|
|
interval: 1s
|
|
retries: 120
|
|
networks:
|
|
- ghost_network
|
|
|
|
traffic-analytics:
|
|
image: ghost/traffic-analytics:edge
|
|
restart: always
|
|
expose:
|
|
- "3000"
|
|
environment:
|
|
NODE_ENV: production
|
|
PROXY_TARGET: ${TINYBIRD_API_URL:-https://api.tinybird.co}/v0/events
|
|
LOG_LEVEL: debug
|
|
profiles: [analytics]
|
|
networks:
|
|
- ghost_network
|
|
|
|
activitypub:
|
|
image: ghcr.io/tryghost/activitypub:edge
|
|
restart: always
|
|
expose:
|
|
- "8080"
|
|
- "9229"
|
|
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
|
|
USE_MQ: false
|
|
GCP_BUCKET_NAME: ${ACTIVITYPUB_GCP_BUCKET:?ACTIVITYPUB_GCP_BUCKET environment variable is required}
|
|
depends_on:
|
|
- db
|
|
networks:
|
|
- ghost_network
|
|
|
|
# Suporting Services
|
|
|
|
tinybird-sync:
|
|
image: ghost:5-alpine
|
|
command: >
|
|
sh -c "
|
|
if [ -d /var/lib/ghost/current/core/server/data/tinybird ]; then
|
|
rm -rf /shared/tinybird/*;
|
|
cp -rf /var/lib/ghost/current/core/server/data/tinybird/* /shared/tinybird/;
|
|
echo 'Tinybird files synced into shared volume.';
|
|
else
|
|
echo 'Tinybird source directory not found.';
|
|
fi
|
|
"
|
|
volumes:
|
|
- tinybird_files:/shared/tinybird
|
|
networks:
|
|
- ghost_network
|
|
profiles: [analytics]
|
|
restart: no
|
|
|
|
tinybird-deploy:
|
|
build:
|
|
context: ./tinybird
|
|
dockerfile: Dockerfile
|
|
working_dir: /home/tinybird
|
|
command: >
|
|
sh -c "
|
|
tb --cloud deploy
|
|
"
|
|
volumes:
|
|
- .tinyb:/home/tinybird/.tinyb
|
|
- tinybird_files:/home/tinybird
|
|
depends_on:
|
|
tinybird-sync:
|
|
condition: service_completed_successfully
|
|
profiles: [analytics]
|
|
networks:
|
|
- ghost_network
|
|
tty: true
|
|
|
|
activitypub-migrate:
|
|
image: ghcr.io/tryghost/activitypub-migrations:edge
|
|
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:
|
|
ghost_content:
|
|
db_data:
|
|
caddy_data:
|
|
caddy_config:
|
|
tinybird_files:
|
|
|
|
networks:
|
|
ghost_network:
|