version: '3'

networks:
  whaticket:

services:

  backend:
    build:
      context: ./backend
      dockerfile: ./Dockerfile
    environment:
      - DB_HOST=mysql
      - DB_USER=root
      - DB_PASS=${MYSQL_ROOT_PASSWORD:-strongpassword}
      - DB_NAME=${MYSQL_DATABASE:-whaticket}
      - JWT_SECRET=${JWT_SECRET:-3123123213123}
      - JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET:-75756756756}
      - BACKEND_URL=${BACKEND_URL:-http://localhost}
      - FRONTEND_URL=${FRONTEND_URL:-http://localhost:3000}
      - PROXY_PORT=${PROXY_PORT:-8080}
      - CHROME_ARGS=--no-sandbox --disable-setuid-sandbox
    ports:
      - ${BACKEND_PORT:-8080}:3000
    volumes:
      - ./backend/public/:/usr/src/app/public/
      - ./backend/.wwebjs_auth/:/usr/src/app/.wwebjs_auth/
    networks:
      - whaticket

  frontend:
    ports:
      - ${FRONTEND_PORT:-3000}:80
      - ${FRONTEND_SSL_PORT:-3001}:443
    build:
      context: ./frontend
      dockerfile: ./Dockerfile
    environment:
      - URL_BACKEND=backend:3000
      - REACT_APP_BACKEND_URL=${BACKEND_URL:-http://localhost}:${PROXY_PORT:-8080}/
      - FRONTEND_SERVER_NAME=${FRONTEND_SERVER_NAME}
      - BACKEND_SERVER_NAME=${BACKEND_SERVER_NAME}
    volumes:
      - ./ssl/certs/:/etc/nginx/ssl/
      - ./ssl/www/:/var/www/letsencrypt/
    networks:
      - whaticket

  mysql:
    image: ${MYSQL_ENGINE:-mariadb}:${MYSQL_VERSION:-10.6}
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_bin    
    volumes:
      - ./.docker/data/:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=${MYSQL_DATABASE:-whaticket}
      - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-strongpassword}
      - TZ=${TZ:-America/Fortaleza}
    ports:
      - ${MYSQL_PORT:-3306}:3306
    restart: always
    networks:
      - whaticket