# đ GUIA DE INSTALAĂĂO DO PROJETO BASE WEB COM DOCKER (em construção) đ
<br/>
## 1. đ» Instalação do Docker
> :warning: Testado apenas no Linux Mint até o momento.
### 1.1 Atualize o Ăndice de pacotes:
```
sudo apt update
```
### 1.2 Instale os pacotes necessĂĄrios para permitir que o `apt` utilize um repositĂłrio sobre HTTPS:
```
sudo apt install apt-transport-https ca-certificates curl software-properties-common
```
### 1.3 adicione a chave GPG para o repositĂłrio oficial do Docker:
```
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
```
### 1.4 Adicione o repositĂłrio do Docker Ă s fontes do APT:
```
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
```
### 1.5 Atualize o Ăndice de pacotes novamente:
```
sudo apt update
```
### 1.6 Instale o Docker
```
sudo apt install docker-ce
```
### 1.7 Para verificar se o Docker foi instalado corretamente, execute:
```
sudo docker --version
```
<br/>
## 2. đ» Gerenciando o Docker como um usuĂĄrio nĂŁo-root
> :warning: Esta ainda não é a melhor solução para o problema de permissÔes do Docker.
### 2.1 Crie o grupo Docker (caso ele ainda nĂŁo exista)
```
sudo groupadd docker
```
### 2.2 Adicione seu usuĂĄrio ao grupo Docker
```
sudo usermod -aG docker $USER
```
### 2.3 Ative as mudanças feitas no grupo
```
newgrp docker
```
### 2.4 Reinicie seu computador
Uma forma simples de fazer isso Ă© executando o comando `reboot` no terminal. Certifique-se de que vocĂȘ nĂŁo estĂĄ com nada pendente, como um documento sem salvar.
<br/>
## 3. đ» Preparando o contĂȘiner
### 3.1 Clone o repositĂłrio com o dockerfile e os scripts
```
git clone https://github.com/mTh22k/teste-front-docker.git
```
Caso vocĂȘ jĂĄ utilize SSH, Ă© possĂvel clonar com o comando a seguir:
```
git clone git@github.com:mTh22k/teste-front-docker.git
```
### 3.2 Entre na pasta
```
cd teste-front-docker
```
### 3.3 Crie a imagem do Docker com as dependĂȘncias do projeto
```
sudo docker build -t teste-front-docker .
```
### 3.4 Crie o contĂȘiner com a imagem criada
```
sudo docker run -it -p 8000:8000 -p 9000:9000 -p 3000:3000 teste-front-docker
```
<br/>
## 4. đ» Preparando o ambiente de desenvolvimento
> âčïž As prĂłximas etapas foram testas com o projeto da Nostrosole.
### 4.1 Clone o projeto
```
git clone https://github.com/ecomp-co/nostrosole.git;
```
Caso vocĂȘ esteja obtendo o clone com HTTPS, serĂĄ necessĂĄrio informar o seu nome de usuĂĄrio do Github e tambĂ©m seu **Personal Access Token**.
Este token pode ser obtido realizando o seguinte caminho no Github: **Settings > Developer Settings > Personal Access Tokens > Tokens (classic) > Generate new token**. No campo **"Expiration"**, marque **"No expiration"** e ao definir o escopo, selecione todas as checkboxes.
### 4.2 Entre na pasta e mude para a branch `develop`
```
cd nostrosole;
git checkout develop;
```
### 4.3 Entre no backe-end e no MariaDB
```
cd back-end;
service mysql start;
mariadb
```
### 4.4 Crise o banco de dados, o usuårio e atribua a ele previlégios
```
create database nostrosole;
create user 'user1'@localhost identified by '123mudar';
grant all privileges on nostrosole.* to 'user1'@localhost;
flush privileges;
exit
```
### 4.5 Copie o arquivo `.env` e o edite
```
cp .env.example .env
vi .env
```
### 4.6 Mude as linhas do cĂłdigo
Com base nos passos anteriores, edite o **nome do banco de dados**, o **usuĂĄrio** e sua **senha**.
```
DB_DATABASE=nostrosole
DB_USERNAME=user1
DB_PASSWORD=123mudar
```
> đ€ Dica: caso esteja usando Vi, Vim ou NeoVim, pressione a tecla `INSERT` para editar o arquivo. Para salvar as modificaçÔes, pressione `ESC` e digite `:x`.
### 4.7 Retorna Ă pasta `html`, e execute o script para rodar o projeto
```
cd ../../
./start_services.sh
```
<br/>
## 5. đ» Acessando o projeto
Acesse seu `localhost:3000` no navegador para visualizar o front-end. O back-end estarĂĄ rodando em `localhost:8000`, pronto para vocĂȘ usar! đ„°

<br/>
## 6. đ» Como usar os contĂȘiners
### 6.1 Voltando a um contĂȘiner ativo
Se vocĂȘ nĂŁo parou a execução do seu contĂȘiner, apenas saiu dele ou desligou o PC, para voltar a ele (que ainda estĂĄ ativo), basta rodar seguir estes passos:
* Descubra o ID do seu contĂȘiner
```
sudo docker ps -a
```
* Entre no contĂȘiner para poder rodar o script novamente
```
sudo docker exec -it <ID_do_ContĂȘiner> /bin/bash
```
### 6.2 Entrando em um contĂȘiner parado
Se vocĂȘ parou seu contĂȘiner para ele nĂŁo ocupar mais as portas 8000 e 3000 com o comando `docker stop <ID_do_ContĂȘiner>` e deseja entrar nele novamente, basta rodar estes comandos:
* Descubra o ID do seu contĂȘiner
```
sudo docker ps -a
```
* Inicie o contĂȘiner que foi parado anteriormente
```
docker start <ID_do_ContĂȘiner>
```
* Entre no contĂȘiner para poder rodar o script novamente
```
sudo docker exec -it <ID_do_ContĂȘiner> /bin/bash
```
<br/>
## 7. đ» Comandos Ășteis para mexer no Docker
### 7.1 Docker build
Este comando Ă© usado para construir uma **imagem Docker** a partir de um **Dockerfile**.
```
docker build -t nome-da-imagem .
```
### 7.2 Docker run
Este comando Ă© usado para executar um contĂȘiner Docker a partir de uma imagem.
```
docker run -it nome-da-imagem
```
### 7.3 Docker ps
Este comando Ă© usado para listar os contĂȘineres Docker em execução.
```
docker ps
```
### 7.4 Docker ps -a
Este comando Ă© usado para listar todos os contĂȘineres Docker, incluindo os que estĂŁo parados.
```
docker ps -a
```
### 7.5 Docker stop
Este comando Ă© usado para parar um contĂȘiner Docker em execução (o id pode ser visto com o docker `px` e `ps -a`).
```
docker stop <id_do_container>
```
### 7.6 Docker start
Este comando Ă© usado para iniciar um contĂȘiner Docker parado.
```
docker start <id_do_container>
```
### 7.7 Docker rm
Este comando Ă© usado para remover um contĂȘiner Docker.
```
docker rm <id_do_container>
```
### 7.8 Docker rmi
Este comando Ă© usado para remover uma imagem Docker.
```
docker rmi <nome_da_imagem>
```
<br/>
## 8. đ» Integração com o VSCode
Caso vocĂȘ ainda nĂŁo tenha o Visual Studio Code em sua mĂĄquina, Ă© possĂvel obtĂȘ-lo a partir da sua [pĂĄgina de download](https://code.visualstudio.com/download). Se jĂĄ o tiver, basta acompanhar o restante dos passos!
### 8.1 Instale a extensĂŁo "Dev Containers"
* Vå para a aba de extensÔes (ou pressione `Ctrl+Shift+X`);
* Procure por [Dev Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) e instale a extensĂŁo;
* Feche e abra novamente o seu VSCode.
### 8.2 Abra o projeto dentro do contĂȘiner
* No menu lateral do VSCode, clique em **"Remote Explorer"**;
* Em **"Dev Containers"**, vocĂȘ encontrarĂĄ o nosso contĂȘiner;
* Passe o mouse sobre o contĂȘiner e clique no botĂŁo **"Attach in New Window"**:

* Talvez nenhum projeto estarĂĄ aberto, entĂŁo clique no Ăcone de **"Explorer"** e no botĂŁo **"New Folder"**;
* Na barra de pesquisa, digite o caminho da pasta do projeto. Exemplo:
```
/var/www/html/nostrosole
```
* Clique em **"Ok"** para abri-lo.
<br/>
## 9. đ» ReferĂȘncias
- [Como Instalar e Utilizar o Docker no Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-pt) (artigo)
- [Gerenciar seus tokens de acesso pessoal](https://docs.github.com/pt/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens) (guia do Github)
- [Como trabalhar com Docker no VSCode](https://youtu.be/y3s47QItVQc?si=JzvQAvfN-qiuRfIV) (vĂdeo)
###### by Marquesini e Andrieli đ #quaqua