version: '3.7'

services:
  app:
    depends_on:
      - mysql
      - redis
    build:
      context: .
      dockerfile: docker-compose-dockerfile-app
    restart: always
    ports:
      - '7202:7002'
    volumes:
      - ./docker-compose/output/app/dist:/root/output/app/dist
      - ./docker-compose/output/app/cabloy:/root/cabloy
      - ./docker-compose/logs/app:/root/logs
    command: ['./scripts/wait-for-it.sh', 'mysql:3306', 'redis:6379', '-s', '--', './scripts/app-init.sh']

  nginx:
    image: nginx:latest
    depends_on:
      - app
    restart: always
    ports:
      - '80:80'
    volumes:
      - ./docker-compose/output/app/dist:/usr/share/nginx/app/dist
      - ./docker-compose/output/app/cabloy:/usr/share/nginx/app/cabloy
      - ./docker-compose/logs/nginx:/var/log/nginx
      - ./docker-compose/config/nginx/conf.d:/etc/nginx/conf.d

  mysql:
    image: mysql:latest
    command:
      - --default-authentication-plugin=mysql_native_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --character-set-client-handshake=FALSE
      - --skip-host-cache
      - --skip-name-resolve
      - --slow_query_log=1
      - --long_query_time=0.5
      - --log-queries-not-using-indexes=1
    restart: always
    ports:
      - '33306:3306'
    volumes:
      - ./docker-compose/data/mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: '{{mysqlRootPassword}}'
      MYSQL_DATABASE: '{{name}}'
      MYSQL_USER: '{{mysqlUserName}}'
      MYSQL_PASSWORD: '{{mysqlUserPassword}}'
    security_opt:
      - seccomp:unconfined

  redis:
    image: redis:latest
    command: ['redis-server', '--appendonly', 'yes']
    restart: always
    ports:
      - '36379:6379'
    volumes:
      - ./docker-compose/data/redis:/data
