services: service: image: ghost:5-alpine labels: - traefik.enable=true - traefik.http.routers.ghost.entrypoints=websecure - traefik.http.routers.ghost.rule=Host(`blog.rskio.com`) - traefik.http.routers.ghost.middlewares=secureHeaders@file - traefik.http.routers.ghost.tls=true - traefik.http.routers.ghost.tls.options=internal@file - traefik.http.routers.ghost.service=ghost@docker - traefik.http.services.ghost.loadbalancer.server.port=2368 - traefik.http.routers.ghost.tls.certresolver=rskio_certresolver environment: - database__client - database__connection__host - database__connection__user - database__connection__password - database__connection__database - url depends_on: mysql: condition: service_healthy redis: condition: service_healthy restart: unless-stopped networks: - default - traefik mysql: image: mysql:8.0.35 command: - --innodb-buffer-pool-size=1G - --innodb-log-buffer-size=500M - --innodb-change-buffer-max-size=50 - --innodb-flush-log-at-trx_commit=0 - --innodb-flush-method=O_DIRECT ports: - 3306:3306 environment: - MYSQL_ROOT_PASSWORD - MYSQL_DATABASE - MYSQL_USER - MYSQL_PASSWORD restart: always volumes: - ./mysql:/var/lib/mysql healthcheck: test: mysql -uroot -proot ghost -e 'select 1' interval: 5s retries: 120 networks: - default redis: image: redis:7.0 restart: always ports: - 6379:6379 healthcheck: test: - CMD - redis-cli - --raw - incr - ping interval: 1s retries: 120 networks: - default pushgateway: profiles: [monitoring] image: prom/pushgateway:v1.6.0 container_name: ghost-pushgateway ports: - 9091:9091 mailhog: image: mailhog/mailhog:latest container_name: ghost-mailhog profiles: [ghost] ports: - "1025:1025" # SMTP server - "8025:8025" # Web interface restart: always networks: - default # prometheus: # profiles: [monitoring] # image: prom/prometheus:v2.30.3 # container_name: ghost-prometheus # ports: # - 9090:9090 # restart: always # volumes: # - ./.docker/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml # networks: # - default # grafana: # profiles: [monitoring] # image: grafana/grafana:8.3.0 # container_name: ghost-grafana # ports: # - 3000:3000 # restart: always # environment: # - GF_AUTH_ANONYMOUS_ENABLED=true # - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin # volumes: # - ./.docker/grafana/datasources:/etc/grafana/provisioning/datasources # - ./.docker/grafana/dashboard.yml:/etc/grafana/provisioning/dashboards/main.yaml # - ./.docker/grafana/dashboards:/var/lib/grafana/dashboards # networks: # - default # - traefik networks: default: {} traefik: external: true