Cap. 1 - Exercício1: Encapsulamento da Aplicação como Microsserviço¶
Para aplicar os demais conhecimentos nas demais aulas, será necessário criar uma imagem da aplicação ‘curso’, cujos detalhes são os seguintes:
- A aplicação é feita em Python;
- O projeto possui um arquivo requirements.txt que contém as bibliotecas python que devem ser instaladas através do PIP. Crie o arquivo ‘requirements.txt’ inclua o valor ‘Flask’ e insira a diretiva
RUN pip install -r requirements.txt
no Dockerfile; - Objetivando um uso inicial em desenvolvimento, apenas utilizaremos um servidor Werkzeug mais simples para servir as páginas do projeto. Para isso, o flask requer que variável de ambiente ‘FLASK_APP’ esteja definida com o nome do módulo da aplicação, nesse caso
app.py
, que pode ser expresso no Dockerfile através da diretivaENV FLASK_APP=app.py
; - O comando a ser utilizado para este contêiner é
flask run
que deve ser realizado a partir da pasta da aplicação; - Crie o módulo
app.py
com o código abaixo, salve-o e copie-o para o alvo ‘/usr/src’ da a imagem (DiretivaCOPY . /usr/src/
):
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
- Realiza a criação da imagem com o nome oficina-docker a etiqueta aula-1 através do comando docker build -t oficina-docker:imagem-aula-1 .;
- Crie um contêiner com o nome aula-1 a partir da imagem com um vínculo da porta 5000 do host para a porta 5000 do contêiner para facilitar a visualização através do um browser, através do comando docker run -d –name aula-1 -p 5000:5000 oficina-docker:imagem-aula-1.
Informações adicionais¶
A imagem python disponibilizada pelo docker em suas diversas variantes (2, 3, 2-slim, 3-slim, 2-alpine, 3-alpine) já possui o PIP instalado, que pode ser utilizado para instalar bibliotecas a partir de um arquivo ou diretamente declarando o pacote a ser instalado, conforme os seguintes exemplos:
#Instalando a partir de um arquivo
pip install -r requirements.txt
#Instalando uma biblioteca diretamente
pip install Flask
Item 1: Se utilizar uma imagem mais simples como base (Debian, Centos, etc) e desejar instalar a última versão do PIP , usualmente a seguinte diretiva é suficiente para instalar o PIP (requer as bibliotecas mínimas do python já instaladas):
curl https://bootstrap.pypa.io/get-pip.py | python
Com base nos dados acima dispostos, realize o processo de encapsulamento da aplicação no modelo de contêineres.
Como Verificar se todas as ações ocorreram conforme o esperado¶
Após a criação da imagem, faça a criação de um contêiner a partir da mesma e verifique através de seu browser se é possível acessar a página inicial disponível em: ‘http://localhost:5000’.
Salvando os trabalhos¶
Após a realização das atividades, salve o resultado do trabalho no github, através dos seguintes comandos (a partir da pasta onde os trabalhos se encontram):
# Inicializar o suporte ao versionamento
git init .
# Adicionar os arquivos atuais ao repositório
git add .
# Realizar o 'Commit' das mudanças no repositório local.
git commit -m "Aula 1"
# Criar uma etiqueta para esta aula.
git tag -a aula1 -m "Aula 1 - <ALUNO>"
# Enviar as mudanças para o reposítório remoto.
git remote add https://github.com/<USUARIO>/docker-unleashed
git push -u origin master aula1