Atividade 01 - Docker
Subindo um container
Crie uma pasta docker com o arquivo index.html a seguir
<html>
<head>
<meta charset="utf-8">
<title>Página de exemplo</title>
</head>
<body>
<h2>Página de exemplo</h2>
<p>Conteúdo da página de exemplo da atividade de docker</p>
</body>
</html>
Entre na pasta docker
docker run -p 8080:80 -v $PWD/index.html:/usr/share/nginx/html/index.html registry.nuvem.unicamp.br/curso-kubernetes/nginx
Utilizando imagens bitnami
docker run -p 8080:8080 -v $PWD/index.html:/app/index.html registry.nuvem.unicamp.br/curso-kubernetes/bitnami-nginx
Note que a porta e a pasta dos arquivos HTML muda de um container para outro, sempre busque a documentação do container que você for utilizar.
Customizando seu container
Crie um arquivo Dockerfile com o conteúdo abaixo
FROM registry.nuvem.unicamp.br/curso-kubernetes/bitnami-nginx
COPY index.html /app/index.html
Faça uma build do seu container utilizando o Dockerfile
docker build . -t atividade1
docker run -p 8080:8080 atividade1
Utilizando um registry
Você pode enviar suas imagens customizadas para um registry, para que possa ser utilizada em outros servidores
Fazendo login no registry
docker login registry.nuvem.unicamp.br
Enviando para o registry
docker tag atividade1 registry.nuvem.unicamp.br/curso-kubernetes/atividade1
docker push registry.nuvem.unicamp.br/curso-kubernetes/atividade1
Pode-se fazer o build diretamente com o nome do registry
docker build . -t registry.nuvem.unicamp.br/curso-kubernetes/atividade1
docker push registry.nuvem.unicamp.br/curso-kubernetes/atividade1
Utilizando o docker-compose
Saia da pasta docker e crie uma pasta docker-compose
Crie um arquivo docker-compose.yaml com o conteúdo abaixo
name: "atividade-2"
services:
web:
image: registry.nuvem.unicamp.br/curso-kubernetes/bitnami-nginx
ports:
- 8080:8080
configs:
- source: nginx_config
target: /opt/bitnami/nginx/conf/server_blocks/my_server_block.conf
volumes:
- ./index.php:/app/index.php
php:
image: registry.nuvem.unicamp.br/curso-kubernetes/bitnami-php-fpm
volumes:
- ./index.php:/app/index.php
db:
image: registry.nuvem.unicamp.br/curso-kubernetes/bitnami-mariadb
environment:
MARIADB_ROOT_PASSWORD: abc123
configs:
nginx_config:
file: ./my_server_block.conf
Crie um arquivo my_server_block.conf com o conteúdo abaixo
server {
listen 0.0.0.0:8080;
server_name _;
root /app;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi.conf;
}
}
Crie um arquivo index.php com o conteúdo abaixo
<?php
phpinfo();
Subindo o ambiente
docker compose up -d
Desligando o ambiente
docker compose down
Projeto
Baseado no git https://gitlab.unicamp.br/curso-kubernetes/code, faça um fork e crie um arquivo Dockerfile para fazer o build do seu container.
Dicas:
Utilize como base a imagem
registry.nuvem.unicamp.br/curso-kubernetes/python:3.11-slim.Para instalar as dependencias use
pip install --no-cache-dir -r requirements.txte para rodar usepython app.pyo Flask expoe o site na porta 5000
Crie um arquivo
docker-compose.yamlpara fazer o deploy do seu container e do banco de dados mysqlDicas:
Utilize a imagem
registry.nuvem.unicamp.br/curso-kubernetes/mysql:8.0Monte um volume com o arquivo
init_db.sqlem/docker-entrypoint-initdb.d/para inicializar o banco de dadosConsulte a documentação do container mysql para configurar as variáveis de ambiente