-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
70 lines (65 loc) · 2.33 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
version: "3"
services:
# Serviço que irá rodar o node
node:
# Imagem base do container
image: node:16
# Nome do container para facilitar execução
container_name: trybesmith
# 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
# Restarta a imagem caso algo a faça parar
restart: always
# Diretório padrão de execução
working_dir: /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
- ./:/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
# Configura as variáveis de ambiente dentro do container
environment:
MYSQL_USER: root
MYSQL_PASSWORD: password
MYSQL_HOST: db
JWT_SECRET: secret
# Serviço que irá rodar o banco de dados
db:
container_name: trybesmith_db
image: mysql:8.0.21
restart: always
# 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 do banco de dados
- 3306:3306
- 33060:33060
environment:
MYSQL_ROOT_PASSWORD: password
# Lista de redes que os containeres irão utilizar
networks:
# Rede padrão, criada automaticamente
default:
# Dá um nome específico à rede padrão
name: trybesmith_net
# 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.