services: base: build: context: ../ dockerfile: .buildkite/Dockerfile args: - RUBY_IMAGE - BUNDLER - RUBYGEMS default: &default image: "${IMAGE_NAME-buildkite_base}" environment: &default_env CI: BUILDKITE: BUILDKITE_BUILD_ID: BUILDKITE_JOB_ID: BUILDKITE_PARALLEL_JOB: BUILDKITE_PARALLEL_JOB_COUNT: encrypted_0fb9444d0374_key: encrypted_0fb9444d0374_iv: RUBY_YJIT_ENABLE: # Sauce Labs username and access key. Obfuscated, purposefully not encrypted. ENCODED: "U0FVQ0VfQUNDRVNTX0tFWT1hMDM1MzQzZi1lOTIyLTQwYjMtYWEzYy0wNmIzZWE2MzVjNDggU0FVQ0VfVVNFUk5BTUU9cnVieW9ucmFpbHM=" BEANSTALK_URL: "beanstalk://beanstalkd" MEMCACHE_SERVERS: "memcached:11211" MYSQL_HOST: mysql MYSQL_PREPARED_STATEMENTS: PGHOST: postgres PGUSER: postgres QC_DATABASE_URL: "postgres://postgres@postgres/active_jobs_qc_int_test" QUE_DATABASE_URL: "postgres://postgres@postgres/active_jobs_que_int_test" RABBITMQ_URL: "amqp://guest:guest@rabbitmq:5672" REDIS_URL: "redis://redis:6379/1" SELENIUM_DRIVER_URL: "http://chrome:4444/wd/hub" volumes: - ../test-reports:/rails/test-reports tmpfs: - /rails/tmp:size=1G,exec postgresdb: <<: *default depends_on: redis: condition: service_healthy memcached: condition: service_healthy postgres: condition: service_healthy mysqldb: <<: *default depends_on: redis: condition: service_healthy memcached: condition: service_healthy mysql: condition: service_healthy mariadb: <<: *default environment: <<: *default_env MYSQL_HOST: mariadb_service depends_on: redis: condition: service_healthy memcached: condition: service_healthy mariadb_service: condition: service_healthy railties: <<: *default depends_on: redis: condition: service_healthy memcached: condition: service_healthy mysql: condition: service_healthy postgres: condition: service_healthy activesupport: <<: *default depends_on: redis: condition: service_healthy memcached: condition: service_healthy activejob: <<: *default depends_on: redis: condition: service_healthy postgres: condition: service_healthy rabbitmq: condition: service_healthy beanstalkd: condition: service_healthy actionview: <<: *default depends_on: redis: condition: service_healthy memcached: condition: service_healthy chrome: condition: service_healthy memcached: image: memcached:alpine pull_policy: missing healthcheck: test: echo stats | nc 127.0.0.1 11211 interval: 10s retries: 60 redis: image: redis:alpine pull_policy: missing healthcheck: test: ["CMD-SHELL", "redis-cli ping | grep PONG"] interval: 1s timeout: 3s retries: 5 mysql: &mysql-defaults image: "${MYSQL_IMAGE-mysql:lts}" pull_policy: missing healthcheck: test: mysql -h 127.0.0.1 -P 3306 -e "SELECT 1;" interval: 1s retries: 60 environment: MYSQL_ALLOW_EMPTY_PASSWORD: "yes" volumes: - "./mysql-initdb.d:/docker-entrypoint-initdb.d" mariadb_service: <<: *mysql-defaults healthcheck: test: healthcheck.sh --su-mysql --connect --innodb_initialized interval: 1s retries: 60 postgres: image: "${POSTGRES_IMAGE-postgres:alpine}" pull_policy: missing healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 environment: POSTGRES_HOST_AUTH_METHOD: "trust" rabbitmq: image: rabbitmq:alpine pull_policy: missing healthcheck: test: rabbitmq-diagnostics -q ping interval: 30s timeout: 30s retries: 3 beanstalkd: build: context: ./ dockerfile: Dockerfile.beanstalkd healthcheck: test: echo -e "stats\r\n" | nc 127.0.0.1 11300 || exit 1 interval: 10s timeout: 10s retries: 3 start_period: 30s chrome: image: seleniarm/standalone-chromium:latest pull_policy: missing healthcheck: test: "curl -f http://127.0.0.1:4444/ui || exit 1" interval: 10s timeout: 10s retries: 3 start_period: 30s