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.