Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Deveriam utilizar ambientes em containers. Além de não precisar instalar ferramentas, incrementa no aprendizado.

Criem uma pasta no projeto chamado ".devcontainer", e crie o conteúdo solicitado abaixo.

Crie um arquivo devcontainer.json e cole o conteúdo abaixo

{
    "name": "Api Full Rest",
    "dockerComposeFile": ["./docker-compose.yml"],
    "service": "api-full-rest",
    "shutdownAction": "none",
    "extensions": [
        "eamodio.gitlens",
        "kisstkondoros.vscode-codemetrics",
        "mutantdino.resourcemonitor"
    ],
    // Open the sub-folder with the source code
    "workspaceFolder": "/workspace/api-full-rest"
  }

Crie um segundo arquivo docker-compose.yml e coloque o conteúdo abaixo:

version: '3.1'
services:
  api-full-rest:
    image: mcr.microsoft.com/vscode/devcontainers/typescript-node:0-10
    container_name: backend
    volumes:
      - ../../api-full-rest:/workspace/api-full-rest:cached
    command: /bin/sh -c "while sleep 1000; do :; done"
    ports:
      - "3002:3002"
    expose:
      - "3002"
    networks:
      - backend
    depends_on:
      - db

  db:
    image: mysql
    command: --default-authentication-plugin=mysql_native_password
    container_name: backend-db
    environment:
      - MYSQL_ROOT_PASSWORD=root123
      - MYSQL_DATABASE=agenda-petshop
      - MYSQL_USER=app
      - MYSQL_PASSWORD=123456
    volumes:
      - ../../api-full-rest/db:/workspace/var/lib/mysql:cached
    ports:
      - "3307:3306"
    expose:
      - "3307"
    networks:
      - backend

networks:
  backend:
    driver: bridge

Um exemplo de como ficou meu acesso ao banco:

var mysql = require('mysql');

var connection = mysql.createConnection({
    host: 'backend-db',
    user: 'app',
    password: '123456',
    database: 'agenda-petshop'
});

module.exports = connection;

Para subir o ambiente, utilize a opção "Open a Remote Window". Se ficou confuso faça uma busca no Google que existem diversos fóruns explicando.

1 resposta
solução!

Oi, Anderson, tudo bem?

Recentemente, configurei um container mysql para um projeto e é incrível a facilidade no uso, evita instalar programas a mais nas máquinas e, como você bem salientou, acrescenta no conhecimento. Sempre que posso crio ambientes de containers. Mas acredito que isso é uma opção individual e que depende de um conhecimento anterior em criação de containers, que nem todos possuem.

Mas a sua dica é preciosa para os alunos que nesse curso precisarem de uma ambiente de container. Obrigada por compartilhar!