services:

  wordpress:
    image: wordpress:6.9.1
    ports:
      - 8180:80
      - 8443:443
    hostname: mydomain.com
    deploy:
       mode: replicated
       replicas: 1
       restart_policy:
         condition: on-failure
         delay: 5s
         max_attempts: 3
         window: 120s
    environment:
      TZ: America/Los_Angeles
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: <username>
      WORDPRESS_DB_PASSWORD_FILE: /run/secrets/wordpress_db_password_v2
      WORDPRESS_DB_NAME: wordpressdb
      WORDPRESS_HOSTNAME: mydomain.com
      WORDPRESS_CONFIG_EXTRA: |
        /* Multisite */
        define('WP_ALLOW_MULTISITE', true );
        define( 'MULTISITE', true );
        define( 'SUBDOMAIN_INSTALL', true );
        define( 'DOMAIN_CURRENT_SITE', 'mydomain.com' ); 
        define( 'PATH_CURRENT_SITE', '/' );
        define( 'SITE_ID_CURRENT_SITE', 1 );
        define( 'BLOG_ID_CURRENT_SITE', 1 );

    volumes:
      - html:/var/www/html
    extra_hosts:
     - mydomain.com:192.168.1.45
    secrets:
      - wordpress_db_password_v2
    configs:
      - source: header_limits
        target: /etc/apache2/conf-enabled/zz-header-limits.conf
        mode: 0444

  db:
    image: mysql:8.0@sha256:968e12b1fde035655c7a940db808b47372b70128293a38a3914e0b291c306e5e
    command: ["--binlog-expire-logs-seconds=172800"]
    environment:
      TZ: America/Los_Angeles
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/wordpress_mysql_root_password
      MYSQL_DATABASE: wordpressdb
      MYSQL_USER: <username>
      MYSQL_PASSWORD_FILE: /run/secrets/wordpress_db_password_v2
    deploy:
       mode: replicated
       replicas: 1
       restart_policy:
         condition: on-failure
         delay: 5s
         max_attempts: 3
         window: 120s
    volumes:
      - db:/var/lib/mysql
    secrets:
      - wordpress_mysql_root_password
      - wordpress_db_password_v2

  db-dump:
    image: mysql:8.0@sha256:968e12b1fde035655c7a940db808b47372b70128293a38a3914e0b291c306e5e
    entrypoint: ["/bin/sh", "/usr/local/bin/db-dump"]
    environment:
      TZ: America/Los_Angeles
      DUMP_HOST: db
      DUMP_DB: wordpressdb
      DUMP_PASSWORD_FILE: /run/secrets/wordpress_mysql_root_password
      DUMP_OPTS: --single-transaction --source-data=2 --routines --events
    configs:
      - source: db_dump
        target: /usr/local/bin/db-dump
        mode: 0555
    secrets:
      - wordpress_mysql_root_password
    volumes:
      - dumps:/dumps
    deploy:
      mode: replicated
      replicas: 1

secrets:
  wordpress_db_password_v2:
    external: true
  wordpress_mysql_root_password:
    external: true

configs:
  wpadmin_conf:
    file: ./wpadmin.conf
    name: wpadmin_conf_v2
  db_dump:
    file: ./db-dump.sh
    name: wordpress_db_dump_v1
  header_limits:
    file: ./header-limits.conf
    name: wordpress_header_limits_v1

volumes:
  html:
    driver: local
    driver_opts:
      type: none
      device: "/mnt/docker-cephFS/wordpress_html"
      o: bind
  db:
    driver: local
    driver_opts:
      type: none
      device: "/mnt/docker-cephFS/wordpress_db"
      o: bind
  dumps:
    driver: local
    driver_opts:
      type: none
      device: "/mnt/docker-cephFS/wordpress_dumps"
      o: bind
