diff --git a/compose.yaml b/compose.yaml index e69de29..17efc85 100644 --- a/compose.yaml +++ b/compose.yaml @@ -0,0 +1,122 @@ +x-logging: &default-logging + options: + max-size: "10m" + max-file: "3" + +x-healthcheck: &default-healthcheck + interval: 30s + timeout: 10s + retries: 3 + start_period: 5s + +networks: + web: + external: true + internal: + external: false + driver: bridge + +services: + caddy: + image: caddy:2-alpine + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - ./caddy/Caddyfile:/etc/caddy/Caddyfile + - ./caddy/data:/data + - ./caddy/config:/config + networks: + - web + - internal + logging: *default-logging + healthcheck: + <<: *default-healthcheck + test: ["CMD", "nc", "-z", "localhost", "80"] + + ghost: + image: ghost:5.89-alpine + restart: unless-stopped + environment: + - url=https://speedyweedyops.org + - database__client=mysql + - database__connection__host=mysql + - database__connection__user=ghostmysqluser + - database__connection__password=/run/secrets/ghost_mysql_password + - database__connection__database=dbghost + secrets: + - ghost_mysql_password + volumes: + - myghostapp:/var/lib/ghost/content + networks: + - internal + depends_on: + - mysql + - caddy + logging: *default-logging + healthcheck: + <<: *default-healthcheck + test: ["CMD", "nc", "-z", "localhost", "2368"] + + gitea: + image: gitea/gitea:1.22 + restart: unless-stopped + volumes: + - giteadata:/data + networks: + - internal + depends_on: + - caddy + logging: *default-logging + healthcheck: + <<: *default-healthcheck + test: ["CMD", "nc", "-z", "localhost", "3000"] + + mysql: + image: mysql:8.4.2 + restart: always + environment: + - MYSQL_RANDOM_ROOT_PASSWORD=true + - MYSQL_DATABASE=dbghost + - MYSQL_PASSWORD=/run/secrets/ghost_mysql_password + - MYSQL_USER=ghostmysqluser + secrets: + - ghost_mysql_password + volumes: + - ./mysql/my.cnf:/etc/mysql/my.cnf + - mysqldb:/var/lib/mysql + networks: + - internal + logging: *default-logging + healthcheck: + <<: *default-healthcheck + test: ["CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/localhost/3306"] + interval: 10s + start_period: 30s + + varnish: + image: varnish:7.3 + restart: unless-stopped + volumes: + - ./varnish/default.vcl:/etc/varnish/default.vcl:ro + environment: + - VARNISH_SIZE=512M + networks: + - internal + depends_on: + - ghost + logging: *default-logging + healthcheck: + <<: *default-healthcheck + test: ["CMD", "varnishadm", "ping"] + interval: 10s + +volumes: + mysqldb: + myghostapp: + giteadata: + +secrets: + ghost_mysql_password: + file: ./ghost_mysql_password \ No newline at end of file