name: ghost services: mysql: image: mysql:8.0.35 container_name: ghost-mysql # We'll need to look into how we can further fine tune the memory usage/performance here 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: root MYSQL_DATABASE: ghost restart: always volumes: # Turns out you can drop .sql or .sql.gz files in here, cool! - ./.docker/mysql-preload:/docker-entrypoint-initdb.d - mysql-data:/var/lib/mysql healthcheck: test: "mysql -uroot -proot ghost -e 'select 1'" interval: 1s retries: 120 redis: image: redis:7.0 container_name: ghost-redis ports: - "6379:6379" restart: always 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 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 pushgateway: profiles: [monitoring] image: prom/pushgateway:v1.6.0 container_name: ghost-pushgateway ports: - "9091:9091" volumes: mysql-data: