version: '3.8'

services:
  # Serviço do Node.js
  node:
    build: .  # Construir a imagem usando o Dockerfile no diretório atual
    container_name: express_node_app
    ports:
      - "3000:3000"  # Expondo a porta 3000 para o acesso externo
    volumes:
      - .:/app  # Monta o diretório local no container para desenvolvimento
    working_dir: /app/src
    command: npm start  # Executa o app.js dentro da pasta src
    environment:
      MYSQL_HOST: mysql
      MYSQL_USER: root
      MYSQL_PASSWORD: root
      MYSQL_DATABASE: flyby
    deploy:
      resources:
        limits:
          memory: 512M  # Limita a memória a 512MB para o container Node.js
        reservations:
          memory: 256M  # Reserva 256MB de memória para o container Node.js

  # Serviço do MySQL
  mysql:
    image: mysql:8  # Usando a imagem oficial do MySQL 8
    container_name: mysql_container
    environment:
      MYSQL_ROOT_PASSWORD: root  # Definindo a senha do root
      MYSQL_DATABASE: flyby  # Criando o banco de dados
    ports:
      - "3306:3306"  # Expondo a porta 3306 do MySQL
    volumes:
      - mysql_data:/var/lib/mysql  # Persistindo dados no volume
    deploy:
      resources:
        limits:
          memory: 1G  # Limita a memória do MySQL a 1GB
        reservations:
          memory: 512M  # Reserva 512MB de memória para o MySQL

volumes:
  mysql_data:
    driver: local
