mirror of
https://github.com/d0zingcat/ghost-docker.git
synced 2026-05-13 15:09:34 +00:00
no ref - I mistakenly didn't realise we don't import our `.env` file and instead populate the settings individually into each container - This fixes that by just importing it all into the Ghost container which eases importing settings from existing installations - This will result in a bit of duplication and split env vars but the rest are generally required across multiple containers so it makes sense
201 lines
5.7 KiB
YAML
201 lines
5.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:
|
|
# Do not alter this without updating the Tinybird Sync container as well
|
|
image: ghost:${GHOST_VERSION:-5-alpine}
|
|
restart: always
|
|
expose:
|
|
- "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
|
|
enableDeveloperExperiments: true
|
|
labs__trafficAnalytics: true
|
|
labs__ActivityPub: 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:
|
|
- ${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
|
|
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: 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"
|
|
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: true
|
|
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: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:
|
|
caddy_data:
|
|
caddy_config:
|
|
tinybird_files:
|
|
tinybird_home:
|
|
|
|
networks:
|
|
ghost_network:
|