Skip to content

Latest commit

 

History

History
129 lines (106 loc) · 4.03 KB

README.md

File metadata and controls

129 lines (106 loc) · 4.03 KB

cases-docker-site-frutas

Case utilizando containers distintos para Node, Mysql e PHP

referências

mysql

comandos

Baixando imagem do mysql a partir de um Dockerfile
docker build -t mysql-image -f api/db/Dockerfile .

Criando o container a partir da imagem baixada
docker run -d --rm --name mysql-container mysql-image

Criando e populando a base de dados
docker exec -i mysql-container mysql -uroot -proot < api/db/script.sql

Acessando container do mysql e validando a criação do banco
docker exec -it mysql-container /bin/bash
mysql -uroot -proot
use db_site_frutas
select * from products;

Recriando o container a partir da imagem baixada e compartilhando volume, evitando perder tudo quando banco for recriado
docker run -d -v /var/lib/mysql:/var/lib/mysql --rm --name mysql-container mysql-image

node (api)

comandos

sudo apt install npm
sudo apt install nodejs
npm install --save-dev nodemon
npm install --save express mysql

contruindo o container

Executar o comando na raiz do projeto

docker build -t node-image -f api/Dockerfile .

Rodando imagem dentro de um container

docker run -d -v $(pwd)/api:/home/node/app -p 9001:9001 --link mysql-container --rm --name node-container node-image

Exibindo resultado

acessar localhost:9001

glossário node

  • nodemon: manterá o node rodando e o atualizará sempre que houver alteração no javascript

php (website)

comandos

Na raix do projeto (acima da pasta website) rodar:

docker build -t php-image -f website/Dockerfile

docker run -d -v $(pwd)/website:/var/www/html -p 8888:80 --link node-container --rm --name php-container php-image .

Exibindo resultado

acessar localhost:8888

recomendações de extensões vscode

  • gitlens vscode
  • version Lens
  • gitignore
  • git graph
  • node require
  • express snippets

recomendações de extensões chrome

glossário docker

  • -t: tag = Nome da imagem local para identificá-la
  • -d: detach = Libera a aba para uso, do contrário ficará indisponível
  • --rm: remove = Se o container já existir será removido
  • --name = Nome do container
  • exec = Significa que executaremos um comando dentro de um container
  • -i = Executando um comando no modo interativo
  • -it = O t significa que utilizaremos o TTYm que em resumo é o terminal
  • -v: volume = Compartilhando o volume, sendo host:container (volumes separados por 2 pontos)
  • -f:file = arquivo, nesse caso, Dockerfile de referência
  • -p:port= flag port, que diz qual porta no host espelhará a porta do container (esquerda host, direita container)
  • --link= com essa flag, é possível ao invés de utilizar o IP da máquina, utilizar o seu name
  • docker inspect container-name = exibe detalhes do container, como IP, rede, etc
  • WORDIR= onde está localizada a aplicação
  • CMD= comando a ser executado assim que o container subir

Imagens Docker Utilizadas

Dockercompose

  • podemos, ou não, usar um Dockerfile
  • volumes = mapeamento que substituí -v no docker run
  • build = Se usarmos o Dockerfile (com esse nome), não precisamos mencionar o comaminho completo com o nome, do contrário sim.
  • Se o nome do arquivo não for docker file, teria que usar
          api:
              build:
                  context: "./api"
                  dockerfile: "Dockerfile-XPTO
    
      
  • restart = caso o container caia, ele será reiniciado automáticamente