services:
  redis:
    image: redis
    ports:
      - "6379:6379"

  db:
    image: mariadb
    environment:
      MARIADB_RANDOM_ROOT_PASSWORD: true
      MARIADB_DATABASE: system3
      MARIADB_USER: system3
      MARIADB_PASSWORD: system3
    volumes:
      - mariadb_data:/var/lib/mysql
    ports:
      - "3306:3306"

  core:
    build:
      context: ../../core
      dockerfile: ../deploy/testing/Dockerfile.backend
    command: bash -c 'python manage.py migrate &&  python testdata.py && python /code/server.py'
    environment:
      - HTTP_HOST=core
      - REDIS_HOST=redis
      - DB_HOST=db
      - DB_PORT=3306
      - DB_NAME=system3
      - DB_USER=system3
      - DB_PASSWORD=system3
      - MAIL_DOMAIN=mail:1025
    volumes:
      - ../../core:/code
      - ../testdata.py:/code/testdata.py
    ports:
      - "8000:8000"
    depends_on:
      - db
      - redis
      - mail

  frontend:
    build:
      context: ../../web
      dockerfile: ../deploy/testing/Dockerfile.frontend
    command: npm run serve
    volumes:
      - ../../web:/web:ro
      - /web/node_modules
      - ./vue.config.js:/web/vue.config.js
    ports:
      - "8080:8080"
    depends_on:
      - core

  mail:
    image: docker.io/axllent/mailpit
    volumes:
      - mailpit_data:/data
    ports:
      - 8025:8025
      - 1025:1025
    environment:
      MP_MAX_MESSAGES: 5000
      MP_DATABASE: /data/mailpit.db
      MP_SMTP_AUTH_ACCEPT_ANY: 1
      MP_SMTP_AUTH_ALLOW_INSECURE: 1

volumes:
  mariadb_data:
  mailpit_data: