Skip to content

Commit

Permalink
Merge pull request #7 from reprograma/add-material
Browse files Browse the repository at this point in the history
adiciona material complementar
  • Loading branch information
raissabrizeno authored Aug 10, 2024
2 parents 94838c3 + 683247e commit f8da881
Show file tree
Hide file tree
Showing 9 changed files with 187 additions and 49 deletions.
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<img src="assets/reprograma-fundos-claros.png" alt="logo reprograma" width="500">
</h1>

# Tema da Aula
# Tema da Aula

Turma Online ON32 - Metodologia DevOps | Semana 10 | 2024 | Professora Raissa Brizeno

Expand Down Expand Up @@ -68,11 +68,15 @@ O que veremos essa semana?
[Trunk-based development](https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development)

### Links documentação de ferramentas:
* https://backstage.io/
* https://helm.sh/docs/
* https://tekton.dev/docs/
* https://argoproj.github.io/cd/
* [Backstage](https://backstage.io/)
* [Helm](https://helm.sh/docs/)
* [Tekton](https://tekton.dev/docs/)
* [Argo](https://argoproj.github.io/cd/)
* [AWS Treinamento e Certificação](https://aws.amazon.com/pt/training/?nc2=type_a)
* [Docker Getting Started](https://docs.docker.com/guides/getting-started/)
* [Docker Compose](https://docs.docker.com/compose/)
* [Homebrew](https://brew.sh/)
* [Colima](https://github.com/abiosoft/colima)


### Livros
Expand All @@ -84,7 +88,3 @@ O que veremos essa semana?
<p align="center">
Desenvolvido com :purple_heart: por raisabrizeno
</p>


#TESTE
#TESTE 2
Binary file added assets/docker-compose.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/docker.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
55 changes: 48 additions & 7 deletions exercicios/para-casa/README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,60 @@
# Exercício de Casa 🏠

## Nome do Exercicio
## Explicação do exercício:

*Vamos usar a mesma aplicação que usamos em sala. [Clique aqui](/exercicios/para-sala/users-api-aula/README.md) para acessar a documentação*

Dividir o [Workflow já existente](/workflows/github-actions-demo.yml) em dois, um para *Pull Request* e um para *Push*. Ambos quando a ação for na Branch principal (main).

O de Pull request deve executar apenas as verificações (testes, lint e etc), o de push deve executar também o build e push para o docker hub.

Um exemplo que pode ser usado para nomear os workflows:

- github-actions-pr.yml
- github-actions-push.yml

*Na entrega, basta adicionar apenas os arquivos novos na pasta workflows, para correção.*

- Explicação do exercício:
[CONTEUDO]
---

Terminou o exercício? Dá uma olhada nessa checklist e confere se tá tudo certinho, combinado?!

- [ ] Fiz o fork do repositório.
- [ ] Fiz o fork do [repositório](https://github.com/reprograma/on32-ijs-s10-metodologia-devops).
- [ ] Clonei o fork na minha máquina (`git clone url-do-meu-fork`).
- [ ] Criei minha branch (` git checkout -b nome-sobrenome `)
- [ ] Criei a pasta com o meu nome dentro da pasta entregas (` mkdir nome-sobrenome`)
- [ ] Resolvi o exercício dentro da minha pasta. Como no [exemplo](/on21-imersao-js-S1-TDD/exercicios/para-casa/entregas/exemplo-nome-sobrenome/).
- [ ] Adicionei as mudanças. (`git add .` para adicionar todos os arquivos, ou `git add nome_do_arquivo` para adicionar um arquivo específico)
- [ ] Commitei a cada mudança significativa ou na finalização do exercício (`git commit -m "Mensagem do commit"`)
- [ ] Pushei os commits na minha branch (`git push origin nome-da-branch`)
- [ ] Criei um Pull Request seguindo as orientações que estao nesse [documento](/on21-imersao-js-S1-TDD/exercicios/para-casa/instrucoes-pull-request.md).
- [ ] Criei um Pull Request seguindo as orientações abaixo

# Como criar meu Pull Request? 🤔

Olá, meninas! <br>
O checklist da atividade ta todo preenchido? Entao agora tá na hora de fazer nosso pull request para o repositório original. <br>
Você deverá navegar até o seu repositório onde você fez o fork e pressionar o botão “New pull request” no lado esquerdo da página. <br> <br>
![alt](https://assets.digitalocean.com/articles/eng_python/PullRequest/PRButton.png)

Você poderá modificar a branch na próxima tela.

Depois de ter escolhido a branch main do repositório original no lado esquerdo, e a nova-branch do seu fork do lado direito, você deve ver uma tela assim:

![alt](https://assets.digitalocean.com/articles/eng_python/PullRequest/PullRequest.png)
<br> <br>
O GitHub vai lhe alertar de que é possível mesclar as duas branches porque não há código concorrente. Você deve adicionar um título, e um comentário descrevendo o seu PR. <br> <br>
DICAS: <br>
1. Você pode seguir esse modelo para o título do seu PR:
```
Nome da Atividade - Seu nome.
```
2. Você pode seguir esse modelo para a descrição do seu PR:
```
O que?
Resolução dos exercícios de DevOps.
Como?
* Adicionei um arquivo para resolver a atividade utilizando o GitActions;
* Adicionei novo workflow para pull request
* Outro ponto que você queira adicionar.
```
Feito isso, é so clicar em “Create pull request”. <br> <br>
Tcharaaaannn! Agora é só esperar a prof revisar seu PR 💜
Empty file.
1 change: 0 additions & 1 deletion exercicios/para-casa/index.js

This file was deleted.

31 changes: 0 additions & 31 deletions exercicios/para-casa/instrucoes-pull-request.md

This file was deleted.

3 changes: 2 additions & 1 deletion material/003-componentes.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@


## Containers
Containers são pacotes leves e portáteis que contêm tudo o que uma aplicação precisa para ser executada, incluindo o código, runtime, bibliotecas e dependências.
Containers são pacotes leves e portáteis que contêm tudo o que uma aplicação precisa para ser executada, incluindo o código, runtime, bibliotecas e dependências.
Mais informações sobre Docker [Aqui](007-docker.md).


<div style="text-align: center;">
Expand Down
128 changes: 128 additions & 0 deletions material/007-docker.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# Docker

[Docker](https://docs.docker.com/guides/getting-started/) é uma plataforma de software que permite criar, testar e implantar aplicações rapidamente. Ele faz isso usando uma tecnologia chamada containers.

Um container é como uma "caixa" que contém tudo o que o software precisa para funcionar: código, bibliotecas, dependências, e até mesmo o sistema operacional. Isso garante que o aplicativo funcione da mesma forma, independentemente do ambiente onde ele está sendo executado (seja no seu computador, em um servidor na nuvem, ou em qualquer outro lugar).

Ainda não entendi...
tá bem, imagine que você é um cozinheiro:

- Cozinha tradicional: Quando você quer preparar uma refeição, você precisa de ingredientes, utensílios de cozinha, e um fogão. Mas se você viajar para outro lugar, pode ser que os utensílios, ingredientes ou o fogão sejam diferentes, e sua receita pode não sair como esperado.

- Cozinha com Docker: Agora, imagine que você tem uma caixa mágica onde você pode colocar todos os ingredientes, panelas, fogão, e tudo o que você precisa para preparar sua refeição. Quando você quer cozinhar em qualquer lugar do mundo, basta levar essa caixa com você. Não importa onde você esteja, sua receita vai sair exatamente igual porque a caixa já tem tudo o que você precisa, na mesma versão e configuração.


### O que o Docker faz?

<img src="../assets/docker.jpg" width="500"/>

- Empacotamento: Docker pega o seu aplicativo (como uma receita) e empacota tudo o que ele precisa (ingredientes, utensílios, fogão) dentro de um "container". Isso inclui o código do aplicativo, as bibliotecas que ele usa e até o sistema operacional que ele precisa.

- Portabilidade: Uma vez que o aplicativo está dentro de um container, você pode rodá-lo em qualquer lugar: no seu computador, em um servidor na nuvem, ou no computador de outra pessoa. O container garante que tudo funcione do mesmo jeito, independentemente de onde ele é executado.

- Isolamento: Cada container é isolado, o que significa que se você tiver vários containers rodando diferentes aplicativos, eles não vão interferir uns com os outros. É como ter várias caixas mágicas, cada uma com sua própria cozinha.

### Por que isso é útil?

- Facilidade de uso: Os desenvolvedores não precisam se preocupar em configurar todo o ambiente sempre que vão rodar um aplicativo. Com Docker, tudo já vem pronto dentro do container.

- Consistência: O aplicativo vai funcionar da mesma maneira, não importa onde ele esteja rodando, porque o container carrega tudo o que é necessário.

- Eficiência: Containers são leves e usam menos recursos do que máquinas virtuais tradicionais (que são como computadores completos rodando dentro de outro computador), então você pode rodar muitos containers no mesmo computador sem problemas.

Em resumo, Docker é como uma "caixa" que ajuda desenvolvedores a empacotar, distribuir e rodar seus aplicativos de maneira fácil e consistente, independentemente de onde esses aplicativos forem executados.

# Docker-compose

Docker Compose é uma ferramenta que complementa o Docker, facilitando a execução de múltiplos containers que formam uma aplicação. Pense no Docker Compose como um orquestrador que coordena vários containers, garantindo que eles sejam executados juntos de maneira organizada.

<img src="../assets/docker-compose.png" width="700"/>

### O que o Docker Compose faz?

Quando você tem uma aplicação complexa que depende de vários serviços diferentes, como por exemplo:

- Um banco de dados (por exemplo, MySQL)
- Um servidor web (por exemplo, Nginx)
- Um serviço de cache (por exemplo, Redis)

Cada um desses serviços pode rodar em seu próprio container. Docker Compose permite que você defina todos esses serviços e suas interações em um único arquivo, chamado *docker-compose.yml*.

Nesse arquivo, você especifica:

- Quais containers serão usados (quais imagens Docker),
- Como eles se conectam entre si (rede),
- Configurações específicas para cada container (volumes,
- variáveis de ambiente, portas expostas, etc.).

### Exemplo:

docker-compose.yaml

```sh
version: '3'
services:
web:
image: nginx
ports:
- "80:80"
db:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: example

```

Acima, dois serviços estão definidos:

- Um servidor web usando a imagem Nginx, exposto na porta 80.
- Um banco de dados MySQL com uma senha especificada.

Para executar o docker-compose o comando é:
```sh
docker-compose up
```
E para parar todos os serviços:
```sh
docker-compose down
```

### Principais Vantagens do Docker Compose:

- Facilidade de uso: Em vez de iniciar cada container manualmente, você define tudo em um único arquivo e controla toda a aplicação com comandos simples.
- Reprodutibilidade: Todo o ambiente de desenvolvimento ou produção pode ser descrito no docker-compose.yml, tornando fácil reproduzir o ambiente em qualquer lugar.
- Escalabilidade: Você pode escalar serviços específicos para rodar múltiplas instâncias com uma simples configuração, facilitando o gerenciamento de grandes aplicações.


Docker Compose é uma ferramenta que permite definir e gerenciar ambientes multi-containers de forma simples e eficiente. Ele é especialmente útil quando você tem uma aplicação composta por vários serviços que precisam ser executados e configurados juntos.

# Docker Desktop

Docker Desktop é uma aplicação que facilita o uso do Docker em sistemas operacionais de desktop, como Windows e macOS (principalmente em WINDOWS). Ele fornece uma interface gráfica para gerenciar containers e vem com tudo o que você precisa para começar a usar Docker em seu computador local.

### O que o Docker Desktop faz?

- Instalação Fácil: Docker Desktop simplifica a instalação do Docker no seu computador. Ele vem com todos os componentes necessários, incluindo o Docker Engine, Docker CLI (linha de comando), Docker Compose e outras ferramentas.

- Interface Gráfica (GUI): Embora o Docker tradicionalmente seja usado via linha de comando, o Docker Desktop inclui uma interface gráfica que facilita a visualização e gerenciamento dos containers, imagens, volumes e redes que você está utilizando.

### Integração com o Sistema Operacional:


- No Windows, o Docker Desktop configura automaticamente o subsistema necessário (como o WSL 2 - Windows Subsystem for Linux) para permitir a execução de containers Linux, que são os mais comuns.

- macOS: No macOS, Docker Desktop usa uma máquina virtual interna para rodar containers Linux.
Sincronização de Arquivos: Docker Desktop facilita a sincronização de arquivos entre o sistema de arquivos do host (seu computador) e os containers, permitindo desenvolvimento e testes mais rápidos.


### Principais Vantagens do Docker Desktop:

- Facilidade de uso: Simplifica a instalação e configuração do Docker em desktops, sem a necessidade de configurações complexas.
- Interface amigável: A interface gráfica ajuda a gerenciar containers e outros recursos de forma mais intuitiva.
Tudo-em-um: Vem com todas as ferramentas necessárias para trabalhar com Docker, incluindo Docker Compose e suporte para Kubernetes.

Docker Desktop é uma solução prática e completa para rodar Docker em ambientes de desktop, fornecendo tanto uma interface gráfica quanto ferramentas de linha de comando para facilitar o trabalho com containers.

```A nível de estudos quem tiver MacOs ou Linux usar terminal é uma boa prática para entender os comandos e funcionamento do Docker, no Window é mais complicado, então pode e deve seguir com a interface. No Windows, por padrão, o docker é startado automáticamente junto com a inicialização do sistema.```

*Para mais informações sobre Docker Desktop acesse a [Documentação Aqui](https://www.docker.com/products/docker-desktop/)*

0 comments on commit f8da881

Please sign in to comment.