services:
  db:
    image: mariadb:10.11
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - abbr_net
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 5s
      timeout: 5s
      retries: 10

  wordpress:
    image: wordpress:latest
    depends_on:
      db:
        condition: service_healthy
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DEBUG: 1
    volumes:
      - wp_data:/var/www/html
      - ../:/var/www/html/wp-content/plugins/abbreviations:ro
    networks:
      - abbr_net
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost/"]
      interval: 5s
      timeout: 10s
      retries: 30
      start_period: 30s

  tester:
    build:
      context: .
      dockerfile: Dockerfile
    depends_on:
      wordpress:
        condition: service_healthy
    environment:
      WP_URL: http://wordpress
      WP_CLI_ALLOW_ROOT: 1
    volumes:
      - .:/tests:ro
      - wp_data:/var/www/html
      - ../:/var/www/html/wp-content/plugins/abbreviations:ro
    networks:
      - abbr_net
    working_dir: /tests
    entrypoint: ["pytest"]
    command: ["-v"]

networks:
  abbr_net:
    driver: bridge

volumes:
  db_data:
  wp_data:
