Pular para o conteúdo principal

10 ideias de projetos do Docker: Do iniciante ao avançado

Aprenda o Docker com essas ideias de projetos práticos para todos os níveis de habilidade, do iniciante ao avançado, com foco na criação e otimização de aplicativos de ciência de dados.
Atualizado 9 de out. de 2024  · 9 min lido

Explorar com IA

Abrir no ChatGPTAbrir no ClaudeAbrir no Perplexity

A experiência prática é essencial para você dominar o Docker. O Docker é uma ferramenta essencial no desenvolvimento de software moderno e na ciência de dados, permitindo que você crie, implante e gerencie aplicativos em contêineres.

Neste artigo, apresento exemplos de projetos do Docker para iniciantes, intermediários e avançados, com foco em compilações em vários estágios, otimização de imagens do Docker e aplicação do Docker na ciência de dados. Esses projetos foram criados para aprofundar seu conhecimento sobre o Docker e aprimorar suas habilidades práticas.

Introdução aos projetos do Docker

Antes de começar a trabalhar nos projetos, verifique se você tem o Docker instalado em seu computador. Dependendo do seu sistema operacional (Windows, macOS, Linux), você pode fazer o download do Docker no site oficial do Docker.

Você também precisará de um conhecimento básico de:

  • Dockerfiles (para definir o que está dentro dos seus contêineres)
  • Docker Compose (para aplicativos com vários contêineres)
  • Comandos básicos da CLI, como docker build, docker run, docker-compose up, etc.

Se você precisar aprimorar suas habilidades nos conceitos acima, confira os cursos Introdução ao Docker ou Conceitos de Containerização e Virtualização.

Vamos começar!

Projetos do Docker para iniciantes

Ao começar a usar o Docker, é importante escolher projetos que correspondam ao seu nível de habilidade e que desafiem você a aprender novos conceitos. Aqui estão algumas ideias de projetos para você começar:

Projeto 1: Configuração de um servidor da Web simples

Neste projeto, você criará um contêiner do Docker que executa um servidor Web básico usando o Nginx. O Nginx é um dos servidores da Web de código aberto mais populares para proxy reverso, balanceamento de carga e muito mais. Ao final deste projeto, você terá aprendido a criar e executar contêineres com o Docker e a expor portas para que o aplicativo possa ser acessado a partir da sua máquina local.

Nível de dificuldade: Iniciante

Tecnologias utilizadas: Docker, Nginx

Instruções passo a passo

  • Instale o Docker: Certifique-se de que o Docker esteja instalado em seu sistema.
  • Crie o diretório do projeto: Crie uma nova pasta e um arquivo index.html dentro dela que será servido pelo Nginx.
  • Escreva o Dockerfile: Um Dockerfile é um script que define o ambiente do contêiner. Ele informa ao Docker qual imagem base você deve usar, quais arquivos incluir e quais portas expor:
FROM nginx:alpine
COPY ./index.html /usr/share/nginx/html
EXPOSE 80
  • Crie a imagem do Docker: Navegue até a pasta do seu projeto e crie a imagem usando:
docker build -t my-nginx-app .
  • Execute o contêiner: Inicie o contêiner e mapeie a porta 80 do contêiner para a porta 8080 em seu computador:
docker run -d -p 8080:80 my-nginx-app
  • Acesse o servidor da Web: Abra o navegador e navegue até http://localhost:8080 para ver a página que você criou.

Projeto 2: Dockerização de um script Python

Este projeto envolve a conteinerização de um script Python simples que processa dados de um arquivo CSV usando a biblioteca pandas. O objetivo é aprender a gerenciar dependências e executar scripts Python dentro de contêineres do Docker, tornando o script portátil e executável em qualquer ambiente.

Nível de dificuldade: Iniciante

Tecnologias utilizadas: Docker, Python, pandas

Instruções passo a passo

  • Escreva o script Python: Crie um script chamado process_data.py que leia e processe um arquivo CSV. Aqui está um exemplo de script:
import pandas as pd
df = pd.read_csv('data.csv')
print(df.describe())
  • Crie um arquivo requirements.txt: Esse arquivo lista as bibliotecas Python de que o script precisa. Nesse caso, precisamos apenas de pandas:
pandas
  • Escreva o Dockerfile: Esse arquivo definirá o ambiente para o script Python:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "process_data.py"]
  • Crie a imagem do Docker:
docker build -t python-script .
  • Execute o contêiner:
docker run -v $(pwd)/data:/app/data python-script

Projeto 3: Criação de um aplicativo simples com vários contêineres

Este projeto ajudará você a se familiarizar com o Docker Compose criando um aplicativo com vários contêineres. Você criará um aplicativo Web simples usando o Flask como front-end e o MySQL como banco de dados de back-end. O Docker Compose permite que você gerencie vários contêineres que trabalham juntos.

Nível de dificuldade: Iniciante

Tecnologias utilizadas: Docker, Docker Compose, Flask, MySQL

Instruções passo a passo

  • Escreva o aplicativo Flask: Crie um aplicativo Flask simples que se conecte a um banco de dados MySQL e exiba uma mensagem. Aqui está um exemplo:
from flask import Flask
import mysql.connector
 
app = Flask(__name__)
 
def get_db_connection():
 	connection = mysql.connector.connect(
	 host="db",
	 user="root",
	 password="example",
	 database="test_db"
 	)
 	return connection
 
@app.route('/')
def hello_world():
 	connection = get_db_connection()
 	cursor = connection.cursor()
 	cursor.execute("SELECT 'Hello, Docker!'")
 	result = cursor.fetchone()
 	connection.close()
 	return str(result[0])
 
if __name__ == "__main__":
 	app.run(host='0.0.0.0')
  • Crie o arquivo docker-compose.yml: O Docker Compose define e executa aplicativos Docker com vários contêineres. Nesse arquivo, você definirá o aplicativo Flask e os serviços do banco de dados MySQL:
version: '3'
services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: test_db
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql

  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
    environment:
      FLASK_ENV: development
    volumes:
      - .:/app

volumes:
  db_data:
  • Escreva o Dockerfile para o Flask: Isso criará a imagem do Docker para o aplicativo Flask:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
  • Crie e execute os contêineres: Use o Docker Compose para exibir o aplicativo inteiro:
docker-compose up --build

Torne-se um engenheiro de dados

Torne-se um engenheiro de dados por meio do aprendizado avançado de Python
Comece a Aprender De Graça

Projetos do Docker de nível intermediário

Os projetos a seguir são para aqueles que têm um sólido conhecimento dos conceitos básicos do Docker. Nelas, você aprenderá conceitos mais complexos, como compilações em vários estágios e técnicas de otimização.

Projeto 4: Criação em vários estágios para um aplicativo Node.js

As compilações em vários estágios ajudam a reduzir o tamanho das imagens do Docker, separando os ambientes de compilação e de tempo de execução. Neste projeto, você colocará em contêiner um aplicativo Node.js usando compilações em vários estágios.

Nível de dificuldade: Intermediário

Tecnologias utilizadas: Docker, Node.js, Nginx

Instruções passo a passo

  • Crie um aplicativo Node.js simples: Escreva um servidor Node.js básico que retorne uma mensagem simples. Aqui está um exemplo:
const express = require('express');
const app = express();
 
app.get('/', (req, res) => res.send('Hello from Node.js'));
 
app.listen(3000, () => console.log('Server running on port 3000'));
  • Escreva o Dockerfile com compilação em vários estágios: O primeiro estágio cria o aplicativo, e o segundo estágio executa o aplicativo com uma imagem de base mais clara.
# Stage 1: Build
FROM node:14 as build-stage
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
# Add the following line if there's a build step for the app
# RUN npm run build

# Stage 2: Run
FROM node:14-slim
WORKDIR /app
COPY --from=build-stage /app .
EXPOSE 3000
ENV NODE_ENV=production
CMD ["node", "server.js"]
  • Crie a imagem:
docker build -t node-multi-stage .
  • Execute o contêiner:
docker run -p 3000:3000 node-multi-stage

Projeto 5: Dockerização de um modelo de aprendizado de máquina com o TensorFlow

Este projeto envolverá a conteinerização de um modelo de aprendizado de máquina usando o TensorFlow. O objetivo é criar um ambiente portátil no qual você possa executar modelos do TensorFlow em vários sistemas sem se preocupar com a configuração subjacente.

Nível de dificuldade: Intermediário

Tecnologias utilizadas: Docker, TensorFlow, Python

Instruções passo a passo

  • Instale o TensorFlow em um script Python: Crie um script Python model.py que carregue e execute um modelo TensorFlow pré-treinado:
import tensorflow as tf
model = tf.keras.applications.MobileNetV2(weights='imagenet')
print("Model loaded successfully")
  • Escreva o Dockerfile: Defina o ambiente para o TensorFlow dentro do Docker:
FROM tensorflow/tensorflow:latest
WORKDIR /app
COPY . .
CMD ["python", "model.py"]
  • Crie a imagem:
docker build -t tensorflow-model .
  • Execute o contêiner:
docker run tensorflow-model

Projeto 6: Criando um ambiente de ciência de dados com o Jupyter e o Docker

Este projeto se concentra na criação de um ambiente de ciência de dados reproduzível usando o Docker e os notebooks Jupyter. O ambiente incluirá bibliotecas Python populares, como pandas, NumPy e scikit-learn.

Nível de dificuldade: Intermediário

Tecnologias utilizadas: Docker, Jupyter, Python, scikit-learn

Instruções passo a passo

  • Crie o arquivo docker-compose.yml: Defina o serviço do Jupyter Notebook e as bibliotecas necessárias. Aqui está um exemplo:
version: '3'
services:
  jupyter:
    	image: jupyter/scipy-notebook
    	ports:
    	- "8888:8888"
    	volumes:
    	- ./notebooks:/home/joelwembo/work
  • Inicie o Jupyter Notebook: Use o Docker Compose para iniciar o Jupyter Notebook.
docker-compose up
  • Acesse o Jupyter Notebook: Abra seu navegador e acesse http://localhost:8888.

Projetos do Docker de nível avançado

Esses projetos de nível avançado se concentrarão em aplicativos do mundo real e conceitos avançados do Docker, como pipelines de aprendizagem profunda e pipelines de dados automatizados.

Projeto 7: Reduzindo o tamanho de uma imagem do Docker para um aplicativo Python

Neste projeto, você otimizará uma imagem do Docker para um aplicativo Python usando imagens básicas mínimas, como o Alpine Linux, e implementando compilações em vários estágios para manter o tamanho da imagem o menor possível.

Nível de dificuldade: Avançado

Tecnologias utilizadas: Docker, Python, Alpine Linux

Instruções passo a passo

  • Escreva o script Python: Crie um script que analise dados usando o pandas. Aqui está um exemplo de script:
import pandas as pd
df = pd.read_csv('data.csv')
print(df.head())
  • Otimize o Dockerfile: Use compilações em vários estágios e o Alpine Linux para criar uma imagem leve.
# Stage 1: Build stage
FROM python:3.9-alpine as build-stage
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY script.py .

# Stage 2: Run stage
FROM python:3.9-alpine
WORKDIR /app
COPY --from=build-stage /app/script.py .
CMD ["python", "script.py"]
  • Crie a imagem:
docker build -t optimized-python-app .

Projeto 8: Dockerização de um pipeline de aprendizagem profunda com o PyTorch

Este projeto envolve a conteinerização de um pipeline de aprendizagem profunda usando o PyTorch. O foco é otimizar o Dockerfile para desempenho e tamanho, facilitando a execução de modelos de aprendizagem profunda em diferentes ambientes.

Nível de dificuldade: Avançado

Tecnologias utilizadas: Docker, PyTorch, Python

Instruções passo a passo

  • Instale o PyTorch em um script Python: Crie um script que carregue um modelo PyTorch pré-treinado e realize a inferência. Aqui está um exemplo:
import torch
model = torch.hub.load('pytorch/vision', 'resnet18', pretrained=True)
print("Model loaded successfully")
  • Escreva o Dockerfile: Defina o ambiente para o PyTorch:
FROM pytorch/pytorch:1.9.0-cuda11.1-cudnn8-runtime
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY model.py .
CMD ["python", "model.py"]
  • Crie a imagem:
docker build -t pytorch-model .
  • Execute o contêiner:
docker run pytorch-model 

Projeto 9: Automatizando pipelines de dados com o Apache Airflow e o Docker

Neste projeto, você configurará e colocará em contêiner um ambiente do Apache Airflow para automatizar pipelines de dados. O Apache Airflow é uma ferramenta popular para orquestrar fluxos de trabalho complexos amplamente usados na engenharia de dados.

Nível de dificuldade: Avançado

Tecnologias utilizadas: Docker, Apache Airflow, Python, PostgreSQL

Instruções passo a passo

  • Crie o arquivo docker-compose.yml: Defina os serviços do Airflow e o banco de dados PostgreSQL:
version: '3'
services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_USER: airflow
      POSTGRES_PASSWORD: airflow
      POSTGRES_DB: airflow
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

  webserver:
    image: apache/airflow:latest
    environment:
      AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
    depends_on:
      - postgres
    ports:
      - "8080:8080"
    volumes:
      - ./dags:/opt/airflow/dags
    command: ["webserver"]

  scheduler:
    image: apache/airflow:latest
    environment:
      AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
      AIRFLOW__CORE__EXECUTOR: LocalExecutor
    depends_on:
      - postgres
      - webserver
    volumes:
      - ./dags:/opt/airflow/dags
    command: ["scheduler"]

volumes:
  postgres_data:
  • Inicie o ambiente Airflow: Use o Docker Compose para criar o ambiente do Airflow:
docker-compose up

Projeto 10: Implementação de uma API de ciência de dados com FastAPI e Docker

Crie e implemente uma API de ciência de dados usando FastAPI. Você colocará a API em contêineres usando o Docker e se concentrará em otimizá-la para ambientes de produção.

Nível de dificuldade: Avançado

Tecnologias utilizadas: Docker, FastAPI, Python, scikit-learn

Instruções passo a passo

  • Escreva o aplicativo FastAPI: Crie uma API simples que use um modelo de aprendizado de máquina para previsões. Aqui está um exemplo:
from fastapi import FastAPI
import pickle
 
app = FastAPI()
with open("model.pkl", "rb") as f:
   model = pickle.load(f)
 
@app.post("/predict/")
def predict(data: list):
   return {"prediction": model.predict(data)}
  • Escreva o Dockerfile: Crie um Dockerfile que defina o ambiente para o FastAPI:
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
  • Crie a imagem:
docker build -t fastapi-app .
  • Execute o contêiner:
docker run -p 8000:8000 fastapi-app

Dicas para trabalhar em projetos do Docker

Enquanto você trabalha nesses projetos, tenha em mente as dicas a seguir:

  • Comece com pouco: Comece com projetos ligeiramente desafiadores e depois passe para tarefas mais complexas. É fundamental desenvolver a confiança em tarefas mais simples.
  • Documente seu progresso: Mantenha um registro detalhado de seus projetos para acompanhar seu aprendizado e usá-lo como referência para empreendimentos futuros.
  • Participe das comunidades do Docker: Participe de fóruns on-line e encontros locais para compartilhar suas experiências, fazer perguntas e aprender com outras pessoas.
  • Experimente e personalize: Não tenha medo de ajustar os projetos, tentar abordagens diferentes e explorar novos recursos do Docker.
  • Continue aprendendo: Continue a expandir seus conhecimentos sobre o Docker explorando tópicos e ferramentas avançados, como Kubernetes, Docker Swarm ou arquitetura de microsserviços.

Conclusão

Dominar o Docker envolve mais do que apenas aprender comandos e configurações. Trata-se de entender como o Docker se encaixa no desenvolvimento de aplicativos modernos, nos fluxos de trabalho de ciência de dados e no gerenciamento de infraestrutura.

Os projetos que compartilhei neste guia forneceram algumas ideias para você desenvolver as habilidades básicas e a experiência prática necessárias para se destacar em cenários do mundo real.

Nesse momento, sugiro que você solidifique seu conhecimento seguindo esses cursos:

Torne-se um engenheiro de dados

Comprove suas habilidades como engenheiro de dados pronto para o trabalho.

Perguntas frequentes

Quais são as práticas recomendadas para escrever Dockerfiles eficientes?

As práticas recomendadas para escrever Dockerfiles eficientes incluem minimizar o número de camadas combinando comandos, usar compilações em vários estágios para reduzir o tamanho da imagem, selecionar imagens de base leves, armazenar dependências em cache e evitar incluir arquivos desnecessários na imagem final.

O que é uma compilação em vários estágios no Docker?

Uma compilação em vários estágios é um método para otimizar as imagens do Docker, separando os ambientes de compilação e de tempo de execução. Isso resulta em imagens menores e mais seguras.

Como você pode reduzir o tamanho de uma imagem do Docker?

Use imagens de base mínimas, gerencie dependências de forma eficiente e empregue compilações em vários estágios para reduzir o tamanho da imagem e melhorar o desempenho.

Como faço para solucionar erros comuns ao criar imagens do Docker?

Os erros comuns ao criar imagens do Docker incluem problemas de permissão, sintaxe incorreta do Dockerfile e falha na instalação de dependências. Para solucionar problemas, verifique os logs de compilação do Docker, certifique-se de que você está usando a imagem de base correta e confirme se os caminhos ou as permissões de arquivo estão definidos corretamente. Ferramentas como docker build --no-cache podem ajudar a identificar problemas de cache.

Posso usar o Docker com o Kubernetes para esses projetos?

Sim, quando você se sentir confortável com o Docker, o Kubernetes pode ser a próxima etapa. O Kubernetes ajuda a gerenciar aplicativos em contêineres em escala. Você pode implantar seus projetos do Docker em um cluster do Kubernetes para gerenciar várias instâncias, lidar com o dimensionamento e automatizar implantações.

Quais são as práticas recomendadas para gerenciar volumes e dados persistentes do Docker?

Ao trabalhar com volumes do Docker, é importante usar volumes nomeados para garantir a persistência dos dados entre as reinicializações do contêiner. Faça backups regulares dos volumes e monitore se há gargalos de desempenho devido à E/S do disco. Evite armazenar dados confidenciais diretamente em contêineres; em vez disso, use soluções de armazenamento seguro ou bancos de dados externos.

Qual é a finalidade da diretiva ENTRYPOINT em um Dockerfile?

A diretiva ENTRYPOINT em um Dockerfile especifica o comando que sempre será executado quando um contêiner for iniciado. Ele permite que o contêiner seja tratado como um executável, no qual os argumentos podem ser passados durante o tempo de execução, aumentando a flexibilidade.

Qual é a diferença entre CMD e ENTRYPOINT em um Dockerfile?

Tanto CMD quanto ENTRYPOINT especificam comandos a serem executados quando um contêiner é iniciado. No entanto, CMD fornece argumentos padrão que podem ser substituídos, enquanto ENTRYPOINT define o comando que sempre é executado. ENTRYPOINT é útil para criar contêineres que funcionam como executáveis, enquanto CMD é mais flexível para especificar comandos padrão.

Tópicos

Saiba mais sobre o Docker com estes cursos!

Programa

Containerização e virtualização com o Docker e o Kubernetes

13 h
Aprenda o poder do Docker e do Kubernetes, este curso interativo permitirá que você crie e implemente aplicativos em ambientes modernos.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

blog

O Guia Completo para a Certificação Docker (DCA) em 2026

Descubra todo o seu potencial no Docker e na ciência de dados com o nosso guia completo. Dá uma olhada nas certificações, trilhas de aprendizagem e dicas práticas do Docker.
Matt Crabtree's photo

Matt Crabtree

8 min

Machine Learning

blog

33 projetos de machine learning para todos os níveis em 2026

Projetos de machine learning para iniciantes, estudantes do último ano e profissionais. A lista tem projetos guiados, tutoriais e exemplos de código-fonte.
Abid Ali Awan's photo

Abid Ali Awan

15 min

R Project

blog

As 8 melhores ideias de projetos R para 2026

Descubra o que é o R e todas as vantagens de usá-lo, com exemplos e novas ideias para um projeto.
Elena Kosourova's photo

Elena Kosourova

14 min

blog

13 projetos LLM para todos os níveis: De Low-Code a Agentes de IA

Descubra 13 ideias de projetos LLM com guias e códigos fáceis de seguir. Crie sistemas RAG, aplicativos de IA e agentes autônomos usando DeepSeek, LangGraph e OpenAI.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Tutorial

Como instalar e configurar o MySQL no Docker

Saiba como instalar e configurar o banco de dados MySQL dentro de contêineres do Docker. O tutorial inclui conceitos como conexão com servidores MySQL, execução de clientes MySQL para conexão com contêineres e assim por diante.
Bex Tuychiev's photo

Bex Tuychiev

Ver MaisVer Mais