-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
79 lines (74 loc) · 2.8 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
version: "3"
services:
# Serviço que irá rodar o node
node:
# Imagem base do container
image: node:16.14
# Nome do container para facilitar execução
container_name: store_manager
# Mesmo que `docker run -t`
tty: true
# Mesmo que `docker run -i`
stdin_open: true
# Substitui o comando padrão da imagem do node
command: bash # você pode subistituir `bash` por `npm run debug` para iniciar a API quando container for iniciado
# Restarta a imagem caso algo a faça parar
restart: always
# Diretório padrão de execução
working_dir: /home/node/app
# Lista de volumes (diretórios) mapeados de fora para dentro do container
volumes:
# Monta o diretório atual, com todos os dados do projeto,
# dentro do diretório /app
- ./:/home/node/app
# Lista de serviços do qual este serviço depende
depends_on:
# Precisa do banco funcionando antes de subir o node
- db
# Lista de portas mapeadas de dentro para fora do container
# na notação porta_de_fora:porta_de_dentro
ports:
# Expõe a porta padrão da aplicação: altere aqui caso use outra porta
- 3000:3000
- 9229:9229
# Configura as variáveis de ambiente dentro do container
environment:
MYSQL_USER: root
MYSQL_PASSWORD: password
MYSQL_HOST: db # Nome do service logo abaixo
PORT: '3000'
HOST: store_manager
networks:
# Conecta esse serviço com a rede que criada
- store_manager_net
# Serviço que irá rodar o banco de dados
db:
# Caso esteja utilizando MacOS M1, descomentar a linha abaixo
# platform: linux/x86_64
# Se a linha de cima não resolver, esta abaixo é outra opção
# platform: linux/arm64/v8
container_name: store_manager_db
image: mysql:8.0.23
environment:
MYSQL_ROOT_PASSWORD: 'password'
ports:
# Garanta que não haverá conflitos de porta com um banco que esteja
# rodando localmente
- 3306:3306
networks:
# Conecta esse serviço com a rede que criada
- store_manager_net
# Lista de redes que os containeres irão utilizar
networks:
# Cria a rede que conecta os serviços `db` e `node`
store_manager_net:
# Específica o drive da rede
driver: bridge
# As chaves `tty`, `stdin_open` e `command` fazem com que o container fique
# rodando em segundo plano, bem como tornam possível o uso do comando
# `docker attach`, já deixando o terminal atual acoplado ao container, direto
# no bash. Apesar disso, utilizar o attach mais de uma vez irá replicar o
# terminal, portanto é melhor utilizar o comando `docker exec`.
# A renomeação da rede padrão é feita pois caso contrário o nome da rede será
# o nome do diretório onde o arquivo atual se encontra, o que pode dificultar
# a listagem individual.