version: '3.3' services: # Main application database. app_db: image: mysql volumes: - app_db_data command: --default-authentication-plugin=mysql_native_password environment: MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD:-password} MYSQL_DATABASE: ${DB_NAME:-wordpress} MYSQL_USER: ${DB_USER:-wordpress} MYSQL_PASSWORD: ${DB_PASSWORD:-password} networks: development: # Capture and display all email sent by WordPress. mailhog: image: mailhog/mailhog ports: - "1025:1025" - "8025:8025" networks: development: # Main application service testable_app: image: woographql/wordpress-dev:${WP_VERSION:-latest} depends_on: - app_db - mailhog build: context: . args: PHP_VERSION: ${PHP_VERSION:-8.0} volumes: - .:/var/www/html/wp-content/plugins/wp-graphql-woocommerce - ./codeception.dist.yml:/var/www/html/wp-content/plugins/wp-graphql-woocommerce/codeception.yml - ./local/public:/var/www/html # WP core files. - ./local/.htaccess:/var/www/html/.htaccess - ./.log/testable_app:/var/log/apache2 env_file: .env.testing environment: APACHE_RUN_USER: "#1000" # Ensure Apache can write to the filesystem. XDEBUG_CONFIG: remote_host=10.0.0.52 idekey=vscode networks: development: ports: - "9001:9001" # Main application database clone for testing inside the main application service. testing_db: image: mysql volumes: - ./local/db:/docker-entrypoint-initdb.d command: --default-authentication-plugin=mysql_native_password environment: MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD:-password} MYSQL_DATABASE: ${DB_NAME:-wordpress} MYSQL_USER: ${DB_USER:-wordpress} MYSQL_PASSWORD: ${DB_PASSWORD:-password} networks: development: testing: aliases: - app_db # Standalone testing application service (for inside of CI). run_tests: image: woographql/wordpress-ci:${WP_VERSION:-latest} depends_on: - testing_db build: context: . args: PHP_VERSION: ${PHP_VERSION:-7.3} volumes: - .:/var/www/html/wp-content/plugins/wp-graphql-woocommerce - ./codeception.dist.yml:/var/www/html/wp-content/plugins/wp-graphql-woocommerce/codeception.yml - ./local/public:/var/www/html # WP core files. - ./local/.htaccess:/var/www/html/.htaccess - ./.log/run_tests:/var/log/apache2 env_file: .env.testing environment: RUNNING_TEST_STANDALONE: 1 GRAPHQL_DEBUG: 1 WPGRAPHQL_WOOCOMMERCE_AUTOLOAD: 1 APACHE_RUN_USER: "#1000" # Ensure Apache can write to the filesystem. WORDPRESS_DOMAIN: localhost WP_SITEURL: http://localhost WP_HOME: http://localhost command: ./setup-database.sh testing codecept run ${FILTER:-} networks: testing: aliases: - run_tests networks: development: testing: volumes: app_db_data: {}