-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
76 lines (73 loc) · 2.54 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
version: '3'
services:
# Serviço que irá rodar o node
node:
# Faz o build do Dockerfile da pasta atual e utiliza o resultado desse build
# como a imagem do container
build: .
# Define um user específico, diferente de root para a execução dos comandos
# user: eval
# Nome do container para facilitar execução
container_name: blogs_api
# 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 # Nome do service logo abaixo
JWT_SECRET: secretJWT
API_HOST: 'node'
API_PORT: 3000
NODE_ENV: 'development'
networks:
- blogs_api_net
# Serviço que irá rodar o banco de dados
db:
container_name: blogs_api_db
image: mysql:8.0.23
# Indica de forma fixa a plataforma na qual o banco irá rodar
platform: linux/x86_64
restart: always
ports:
# Garanta que não haverá conflitos de porta com um banco que esteja
# rodando localmente
- 33061:3306
- 33062:33062
environment:
MYSQL_ROOT_PASSWORD: password
networks:
- blogs_api_net
# Lista de redes que os containeres irão utilizar
networks:
# Cria rede com nome `blogs_api_net`
blogs_api_net:
# Define o `driver` como `bridge`, que é o driver padrão do docker
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`.