# WARNING: This is a CI docker-compose file used for building and testing of the entire app, it should not be used for production.
version: "3"
services:

  fullstack-mysql:
    image: ${IMAGE}:ci-${BUILD_NUMBER}
    environment:
      NODE_ENV: "development"
      FORCE_COLOR: 1
      DB_MYSQL_HOST: "db"
      DB_MYSQL_PORT: 3306
      DB_MYSQL_USER: "npm"
      DB_MYSQL_PASSWORD: "npm"
      DB_MYSQL_NAME: "npm"
    volumes:
      - npm_data:/data
    expose:
      - 81
      - 80
      - 443
    depends_on:
      - db
    healthcheck:
      test: ["CMD", "/bin/check-health"]
      interval: 10s
      timeout: 3s

  fullstack-sqlite:
    image: ${IMAGE}:ci-${BUILD_NUMBER}
    environment:
      NODE_ENV: "development"
      FORCE_COLOR: 1
      DB_SQLITE_FILE: "/data/database.sqlite"
    volumes:
      - npm_data:/data
    expose:
      - 81
      - 80
      - 443
    healthcheck:
      test: ["CMD", "/bin/check-health"]
      interval: 10s
      timeout: 3s

  db:
    image: jc21/mariadb-aria
    environment:
      MYSQL_ROOT_PASSWORD: "npm"
      MYSQL_DATABASE: "npm"
      MYSQL_USER: "npm"
      MYSQL_PASSWORD: "npm"
    volumes:
      - db_data:/var/lib/mysql

  cypress-mysql:
    image: ${IMAGE}-cypress:ci-${BUILD_NUMBER}
    build:
      context: ../test/
      dockerfile: cypress/Dockerfile
    environment:
      CYPRESS_baseUrl: "http://fullstack-mysql:81"
    volumes:
      - cypress-logs:/results
    command: cypress run --browser chrome --config-file=${CYPRESS_CONFIG:-cypress/config/ci.json}

  cypress-sqlite:
    image: ${IMAGE}-cypress:ci-${BUILD_NUMBER}
    build:
      context: ../test/
      dockerfile: cypress/Dockerfile
    environment:
      CYPRESS_baseUrl: "http://fullstack-sqlite:81"
    volumes:
      - cypress-logs:/results
    command: cypress run --browser chrome --config-file=${CYPRESS_CONFIG:-cypress/config/ci.json}

volumes:
  cypress-logs:
  npm_data:
  db_data: