Skip to content
Snippets Groups Projects
Commit a28ec9ee authored by mvrp21's avatar mvrp21
Browse files

feat(docker-fundamentals): more progress


Signed-off-by: default avatarMarcus V. <mvrp21@inf.ufpr.br>
parent 97412cff
No related branches found
No related tags found
No related merge requests found
# Fundamentos do Docker
Assume-se que quem ler essa documentação é familiarizado com os conceitos
básicos de Docker[^cite_docker_concepts].
## Trabalhando com **contêineres**
### Hello, World!
## O arquivo **Dockerfile**
## Analisando **imagens**
## Persistindo mudanças no disco com **volumes**
## Uma introdução a **redes** (de Docker)
## Docker Compose
### docker-compose.yml
...
## Exemplo de deploy
TODO: exemplo de backend e frontend configurando o nginx
:::{admonition} Esse **não é** o método preferido.
:class: note
Idealmente com Docker **separa-se o código da
infraestrutura** completamente.
Logo, o fluxo de trabalho ideal para um projeto em Docker seria
realizar o `push` de sua imagem para um *registry* e o ambiente
de deploy fazer o `pull` dela. Tarefas que podem até ser realizadas
por times distintos.
Esse tipo de automação pode ser integrada ao desenvolvimento
utilizando ferramentas como GitLabCI[^cite_gitlab_ci] para
realizar esse deploy com qualquer *merge* na branch `main`,
por exemplo.
Entretanto, no momento em que esse documento é escrito esse é
o método utilizado no C3SL.
:::
[^cite_docker_concepts]: [Conceitos básicos de Docker](../concepts/docker.md).
......@@ -289,16 +289,29 @@ executar o servidor com `npm start`.
Para isso é necessário que o `npm` esteja instalado no sistema.
```Dockerfile
FROM node:lts
WORKDIR /app/
EXPOSE 3000
COPY package.json /app/package.json
RUN npm install
COPY . /app/
CMD [ "npm", "start" ]
```
TODO: explicar tudo em detalhes.................................................
:::{caution}
A imagem escolhida é `node:lts`. Para usos além de testes locais é sempre bom
mudar a tag `lts` para uma versão específica da imagem.
Isso pois `lts` é uma **tag dinâmica**. Hoje essa tag aponta para uma versão
específica (20.11.1 no momento) da escrita desse parágrafo, mas conforme o
específica (20.11.1 no momento da escrita desse parágrafo), mas conforme o
tempo passa a versão LTS (Long Term Support[^cite_lts]) mudará; e não é
impossível que essa mudança quebre a aplicação.
......@@ -312,9 +325,13 @@ suas dependências mudar ele **deveria** acompanhar essa mudança. Infelizmente
o mundo da teoria é muito mais bonito e previsível que o da prática.)
:::
#### Camadas
#### Sequência de passos
TODO: eventualmente comentar do .dockerignore, talvez não aqui
##### Ordenando as camadas
TODO: mostrar trocas de camadas
#### Mapeando portas
:::{attention}
......@@ -327,7 +344,16 @@ utilizando a imagem quais portas devem ser "publicadas". Ela serve como uma
espécie de **documentação**.
:::
#### ARG e ENV
#### CMD vs ENTRYPOINT
:::{note}
Uma instrução particularmente interessante é a `HEALTHCHECK`.
:::
### *Attached* e *detached*
#### Vendo Logs
## Disco persistente com **volumes**
......@@ -367,6 +393,7 @@ docker-compose vs. docker compose
Falar de `pull`, `login`, `push` e etc.
## Exemplo de *deploy* manual
TODO: fazer o exemplo
:::{admonition} Esse não é necessariamente o melhor método.
......@@ -383,6 +410,8 @@ ferramentas como GitLabCI[^cite_gitlab_ci] para realizar esse deploy com
qualquer *merge* na branch `main`, por exemplo.
:::
### Produção e Desenvolvimento
## TODO: Fernando comentou sobre docker debian12 em host debian9 -> estudar
## TODO: Colinha de Docker
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment