92 lines
3.5 KiB
YAML
92 lines
3.5 KiB
YAML
services:
|
|
ghost-me-db:
|
|
image: ${GHOST_ME_DB_IMAGE}
|
|
container_name: ghost-me-db
|
|
restart: unless-stopped
|
|
labels:
|
|
prune.protect: "true"
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: ${GHOST_ME_DB_ROOT_PASSWORD}
|
|
MYSQL_DATABASE: ${GHOST_ME_DB_NAME}
|
|
MYSQL_USER: ${GHOST_ME_DB_USER}
|
|
MYSQL_PASSWORD: ${GHOST_ME_DB_PASSWORD}
|
|
TZ: ${TZ}
|
|
volumes:
|
|
- ${GHOST_ME_DB_DATA_PATH}:/var/lib/mysql:Z
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u${GHOST_ME_DB_USER} -p${GHOST_ME_DB_PASSWORD} --silent"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 20
|
|
start_period: 30s
|
|
networks:
|
|
- ghost_me_internal
|
|
|
|
ghost-me:
|
|
image: ${GHOST_ME_IMAGE}
|
|
container_name: ghost-me
|
|
restart: unless-stopped
|
|
depends_on:
|
|
ghost-me-db:
|
|
condition: service_healthy
|
|
environment:
|
|
NODE_ENV: production
|
|
TZ: ${TZ}
|
|
url: https://${GHOST_ME_DOMAIN}
|
|
database__client: mysql
|
|
database__connection__host: ghost-me-db
|
|
database__connection__user: ${GHOST_ME_DB_USER}
|
|
database__connection__password: ${GHOST_ME_DB_PASSWORD}
|
|
database__connection__database: ${GHOST_ME_DB_NAME}
|
|
mail__transport: SMTP
|
|
mail__from: ${GHOST_ME_MAIL_FROM}
|
|
mail__options__host: mail-relay
|
|
mail__options__port: 587
|
|
mail__options__secure: "false"
|
|
mail__options__ignoreTLS: "true"
|
|
volumes:
|
|
- ${GHOST_ME_CONTENT_PATH}:/var/lib/ghost/content:Z
|
|
- ${GHOST_ME_ROUTES_PATH}:/var/lib/ghost/content/settings/routes.yaml:Z
|
|
- ./theme-source-personal:/var/lib/ghost/content/themes/source-personal:Z
|
|
networks:
|
|
- ghost_me_internal
|
|
- proxy
|
|
- mail_internal
|
|
labels:
|
|
prune.protect: "true"
|
|
traefik.enable: "true"
|
|
traefik.docker.network: "${TRAEFIK_DOCKER_NETWORK}"
|
|
traefik.http.routers.ghost-me.rule: "Host(`${GHOST_ME_DOMAIN}`)"
|
|
traefik.http.routers.ghost-me.entrypoints: "${TRAEFIK_ENTRYPOINT_SECURE}"
|
|
traefik.http.routers.ghost-me.tls: "true"
|
|
traefik.http.routers.ghost-me.tls.certresolver: "${TRAEFIK_CERTRESOLVER}"
|
|
traefik.http.routers.ghost-me.service: "ghost-me"
|
|
traefik.http.routers.ghost-me.middlewares: "crowdsec-bouncer@file"
|
|
traefik.http.services.ghost-me.loadbalancer.server.port: "2368"
|
|
traefik.http.routers.ghost-me-alt.rule: "Host(`${GHOST_ME_DOMAIN_ALT}`)"
|
|
traefik.http.routers.ghost-me-alt.entrypoints: "${TRAEFIK_ENTRYPOINT_SECURE}"
|
|
traefik.http.routers.ghost-me-alt.tls: "true"
|
|
traefik.http.routers.ghost-me-alt.tls.certresolver: "${TRAEFIK_CERTRESOLVER}"
|
|
traefik.http.routers.ghost-me-alt.service: "ghost-me"
|
|
traefik.http.routers.ghost-me-alt.middlewares: "crowdsec-bouncer@file,ghost-me-alt-redirect"
|
|
traefik.http.middlewares.ghost-me-alt-redirect.redirectregex.permanent: "true"
|
|
traefik.http.middlewares.ghost-me-alt-redirect.redirectregex.regex: "^https://${GHOST_ME_DOMAIN_ALT}(:443)?/(.*)"
|
|
traefik.http.middlewares.ghost-me-alt-redirect.redirectregex.replacement: "https://${GHOST_ME_DOMAIN}/$${2}"
|
|
homepage.group: "Personal"
|
|
homepage.name: "Me"
|
|
homepage.icon: "https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/ghost.svg"
|
|
homepage.description: "Sitio personal y CV de Eduardo Paredes"
|
|
homepage.href: "https://${GHOST_ME_DOMAIN}/"
|
|
homepage.siteMonitor: "http://ghost-me:2368/"
|
|
homepage.weight: "140"
|
|
|
|
networks:
|
|
ghost_me_internal:
|
|
driver: bridge
|
|
labels:
|
|
prune.protect: "true"
|
|
mail_internal:
|
|
external: true
|
|
proxy:
|
|
external: true
|