---
services:
  web-deploy:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile
      target: app
      secrets:
        - COMPOSER_AUTH
    ports:
      - 8081:8081
    healthcheck:
      test: ["CMD-SHELL", "curl", "-f", "http://localhost:8081/hello/"]
      interval: 30s
      timeout: 5s
      retries: 5
    environment:
      - Environment=dev
      - PHP_DISPLAY_ERRORS=true
      - PHP_SESSION_COOKIE_HTTPONLY=0
      - PHP_SESSION_COOKIE_SECURE=0
      - AWS_ACCESS_KEY_ID
      - AWS_SECRET_ACCESS_KEY
      - AWS_SESSION_TOKEN
      - AWS_PROFILE
      - AWS_REGION
      - AWS_KEY=$AWS_ACCESS_KEY_ID
      - AWS_SECRET=$AWS_SECRET_ACCESS_KEY
      - DD_TRACE_ANALYTICS_ENABLED=true
      - DD_TRACE_APP_NAME=dev-ows-carveouts
      - DD_TRACE_DEBUG=false
      - DD_TRACE_GLOBAL_TAGS=env:dev-ows-carveouts
    env_file:
      - path: .env
        required: false
    volumes:
      - ./src:/var/www/html/src
    depends_on:
      ha-proxy:
        condition: service_healthy
  ha-proxy:
    image: haproxy:2.9.6
    ports:
      - 3306:3306
      - 3307:3307
      - 8080:8080
    volumes:
      - ./haproxy_mysql.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
    healthcheck:
      interval: '1s'
      retries: 60
      # yamllint disable rule:line-length
      test: |
        bash -c 'exec 3<>/dev/tcp/127.0.0.1/8081; echo -e "GET / HTTP/1.1\nConnection: close\n" >&3; cat <&3 | grep -q "200 OK"'
      # yamllint enable rule:line-length
  unit-lint:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile
      target: lint_and_test
      secrets:
        - COMPOSER_AUTH
    environment:
      - Environment=testing
      - PHP_DISPLAY_ERRORS=true
      - PHP_SESSION_COOKIE_HTTPONLY=0
      - PHP_SESSION_COOKIE_SECURE=0
      - SKIP_LINT=0
      - TEST_DB_HOST=${TEST_DB_HOST}
      - TEST_DB_USER=${TEST_DB_USER}
      - TEST_DB_NAME=${TEST_DB_NAME}
      - TEST_DB_PWD=${TEST_DB_PWD}
      - TEST_DB_DRIVER=${TEST_DB_DRIVER}
      - TEST_DB_PORT=${TEST_DB_PORT}
      - TEST_FILTER=
    env_file:
      - path: .env
        required: false
    depends_on:
      test-ar-db:
        condition: service_healthy
  test-ar-db:
    platform: linux/amd64
    image:
      086679231553.dkr.ecr.us-east-1.amazonaws.com/docker-database-images:art-relations
    pull_policy: always
    environment:
      DB_USER: ${TEST_DB_USER}
      DB_PASSWORD: ${TEST_DB_PWD}
    command: >
      --disable-log-bin
    tmpfs:
      - /var/lib/mysql
    healthcheck:
      interval: 1s
      timeout: 5s
      retries: 180
  test-integration:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile
      target: integration_tests
      secrets:
        - COMPOSER_AUTH
    environment:
      - Environment=testing
    env_file:
      - path: .env
        required: false
  update-lockfile:
    platform: linux/amd64
    build:
      context: .
      dockerfile: Dockerfile
      target: composer_update
    secrets:
      - COMPOSER_AUTH
    volumes:
      - ./composer.lock:/var/www/html/composer.lock
secrets:
  COMPOSER_AUTH:
    environment: "COMPOSER_AUTH"
