# 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.8'
services:

  fullstack-mysql:
    image: "${IMAGE}:ci-${BUILD_NUMBER}"
    environment:
      DEBUG: 'true'
      LE_STAGING: 'true'
      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_mysql:/data
      - npm_le_mysql:/etc/letsencrypt
    expose:
      - 81
      - 80
      - 443
    depends_on:
      - db
    healthcheck:
      test: ["CMD", "/usr/bin/check-health"]
      interval: 10s
      timeout: 3s

  fullstack-sqlite:
    image: "${IMAGE}:ci-${BUILD_NUMBER}"
    environment:
      DEBUG: 'true'
      LE_STAGING: 'true'
      FORCE_COLOR: 1
      DB_SQLITE_FILE: '/data/mydb.sqlite'
      PUID: 1000
      PGID: 1000
      DISABLE_IPV6: 'true'
    volumes:
      - npm_data_sqlite:/data
      - npm_le_sqlite:/etc/letsencrypt
    expose:
      - 81
      - 80
      - 443
    healthcheck:
      test: ["CMD", "/usr/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:
      - mysql_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_mysql:/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_sqlite:/results
    command: cypress run --browser chrome --config-file=${CYPRESS_CONFIG:-cypress/config/ci.json}

volumes:
  cypress_logs_mysql:
  cypress_logs_sqlite:
  npm_data_mysql:
  npm_data_sqlite:
  npm_le_sqlite:
  npm_le_mysql:
  mysql_data: