-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
66 lines (61 loc) · 2.16 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
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: car_shop
# Caminho da Dockerfile
build: ./
# 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 mongo funcionando antes de subir o node
- mongodb
# 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
- 3001:3001
environment:
- MONGO_URI=mongodb://mongodb:27017/CarShop
# Serviço que irá rodar o mongodb
mongodb:
image: mongo:5.0.7
container_name: car_shop_db
volumes:
- ./:/app
restart: always
ports:
# Garanta que não haverá conflitos de porta com um mongodb que esteja
# rodando localmente
- 27017:27017
# 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: car_shop_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.