alvaroviveiros / php-sample-app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Este projeto segue as especificações requeridas do repositório -> Sistemas para Internet - SecDevOps.

fiap-logo
fiap-logo
Criação de uma aplicação no formato "CRUD" executada em containers com base na linguagem "PHP" e no banco de dados "MySQL"

Quickstart 🏃‍

Primeiro, tenha certeza que o Docker esteja instalado corretamente.

Para saber a versão instalada, no terminal:

docker -v

Front-End

Build da Imagem

Iremos Buildar uma Imagem:

docker build . -t frontend-php:0.0.1
  • docker build é um comando CLI do Docker para gerarmos containers.
  • -t significa Tag, portanto conseguimos futuramente identifica-lo melhor.
  • frontend-php é o nome do projeto que estamos dando (é de sua escolha).
  • :0.0.1 é a versão que estamos dando ao projeto.
O que é uma imagem?

Uma imagem Docker são blocos de containers em execução. Para executar um container é preciso construir a imagem inicialmente.

explicacao-docker
O que é e o que tem dentro do Dockerfile?

Dockerfile é um arquivo com o padrão Docker onde nós colocamos nossos comandos para podermos automatizar deploys. Nele podemos buildar uma imagem do Docker e executar instâncias de containers. É de extrema importancia a ordem em que iremos colocar os códigos, o Dockerfile é lido de baixo para cima.

FROM php:7.2-apache
  • Esta dizendo qual imagem você escolheu com sua versão respectivamente. A imagem vem do DockerHub, existem diversas imagens prontas... É possível criar sua própria imagem e subir ela para sua necessidade.
RUN docker-php-ext-install mysqli
  • Podemos instalar extensões, neste caso é uma extensão que liga o PHP com MySql.
WORKDIR /var/www/html/
  • Diretório de execução.
COPY . /var/www/html/
  • Copia todo o conteúdo.

Para verificar se a imagem foi realmente criada:

docker images

Você pode observar detalhes de outras imagens que você já criou utilizando este comando.

Executando nosso Container

Para executarmos nosso Container com nossa aplicação:

docker run -d -p 80:80 --rm --name frontend frontend-php:0.0.1
  • docker run comando CLI do Docker.
  • -d deixa o container executando em segundo plano.
  • -p define a porta utilizada, seguida de porta base para porta destino("x":"x").
  • --rm --name nome do container.

Verificar se está executando

Utilize um comando CLI do Docker:

docker ps

Ele irá mapear todos os containers que estão rodando.


Back-End

Utilizando imagem PHP com Apache e MySQL

Iremos utilizar o terminal e o Docker CLI para pegarmos as imagens do PHP com Apache e MySQL.

Tenha certeza que esteja no diretório do Back-end para executar estes comandos:

docker pull php:7.2-apache
  • Estamos pegando o PHP com Apache.
docker pull mysql:5.1
  • E agora o MySQL na versão 5.1.

Build da Imagem do MySQL

docker build -t db:0.0.1
  • -t significa Tag, portanto conseguimos futuramente identifica-lo melhor.
  • :0.0.1 é a versão que estamos dando ao projeto.

Para verificar se a imagem foi realmente criada:

docker images

Você pode observar detalhes de outras imagens que você já criou utilizando este comando.

Executando nosso Container

Para executarmos nosso Container com nossa aplicação:

docker run -d -e MYSQL_DATABASE=demo -e MYSQL_ALLOW_EMPTY_PASSWORD=yes --name backend db:0.0.1
  • docker run comando CLI do Docker.
  • -d deixa o container executando em segundo plano.
  • -e é o uso da nossa variável.
  • MYSQL_DATABASE=demo nome do nosso banco de dados.
  • MYSQL_ALLOW_EMPTY_PASSWORD=yes permite o uso de senha vazia.
  • --name nome do container.

Verificando o Container

docker exec -ti backend mysql -u root -p
  • docker exec executa a função.
  • -ti backend mysql especifica qual projeto e qual tecnologia.
  • -u root -p utiliza o padrão de portas para conectar o banco.

Explicando Dockerfile do Back

FROM mysql:5.7
  • Esta dizendo qual imagem você escolheu com sua versão respectivamente. A imagem vem do DockerHub, existem diversas imagens prontas... É possível criar sua própria imagem e subir ela para sua necessidade.
COPY ./demo.sql /docker-entrypoint-initdb.d/
  • Esta dizendo qual pasta que iremos copiar os arquivos.

Conectando Front com o Back

Por fim, linkamos nossos dois projetos que estão sendo executados em containers:

docker run -d -p 80:80 --name frontend --link backend frontend:0.0.1
  • --link conecta dois containers, fazendo uma ligação entre os dois.

O que nós aprendemos?

  • Criamos um Container de um projeto, entendemos como eles funcionam e como executamos.
  • Utilizamos imagens para a construção de Containers utilizando DockerHub, dando asas para criar infinitos projetos com imagens de lá.
  • Linkamos os projetos de Containers diferentes e agora tudo faz sentido, tá tudo junto e funcionando em sincronia
  • Subimos um projeto completo em Docker! pera... É isso mesmo? Olocoo meu! :D

Sério que você curtiu? Que foda! ^^

A Documentação do Docker tem muita coisa maneira!

◔ ⌣ ◔

About


Languages

Language:PHP 100.0%