03 de março de 2025
Se você já se frustrou ao tentar configurar um ambiente de desenvolvimento ou enfrentou problemas como "funciona na minha máquina", o Docker pode ser a solução que você procura. O Docker é uma ferramenta poderosa que permite criar, implantar e executar aplicações em ambientes isolados chamados containers.
Neste tutorial, vou te guiar pelos conceitos básicos do Docker, mostrando como ele pode facilitar sua vida como desenvolvedor.
O Docker é uma plataforma de virtualização que permite empacotar uma aplicação e suas dependências em um container. Diferente das máquinas virtuais tradicionais, que emulam um sistema operacional completo, os containers compartilham o kernel do sistema operacional do host, tornando-os mais leves e eficientes.
Consistência: Com o Docker, você garante que sua aplicação funcione da mesma forma em qualquer ambiente (desenvolvimento, teste, produção).
Isolamento: Cada container é independente, o que evita conflitos entre dependências de diferentes projetos.
Portabilidade: Você pode criar um container em sua máquina e executá-lo em qualquer lugar que suporte Docker.
Facilidade de Colaboração: Compartilhar ambientes de desenvolvimento com sua equipe fica muito mais simples.
Antes de mergulharmos na prática, é importante entender alguns conceitos-chave:
Imagem: Um modelo read-only que contém o sistema de arquivos, bibliotecas e dependências necessárias para executar uma aplicação.
Container: Uma instância executável de uma imagem. É onde sua aplicação realmente roda.
Dockerfile: Um arquivo de texto que contém instruções para criar uma imagem.
Docker Hub: Um repositório público de imagens Docker, onde você pode encontrar e compartilhar imagens prontas.
Primeiro, você precisa instalar o Docker no seu computador. Aqui estão os links para download:
Windows: Docker Desktop for Windows
macOS: Docker Desktop for macOS
Linux: Docker Engine for Linux
Após a instalação, abra o terminal e execute docker --version
para verificar se tudo está funcionando.
Vamos começar com algo simples: executar um container com a imagem oficial do Hello World.
No terminal, execute:
docker run hello-world
O Docker vai baixar a imagem hello-world
(se ainda não tiver) e executar o container. Você verá uma mensagem de boas-vindas, confirmando que o Docker está funcionando corretamente.
Vamos listar a imagem baixada utilizada para criar o container hello-world.
Execute:
docker images
Você deve ver uma lista de imagens docker parecida com:
REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest f1f77a0f96b7 6 weeks ago 5.2kB
Vamos listar os containers:
docker ps
Você vai ver que nenhum container foi listado. Por que?
O que aconteceu é que o comando docker run hello-world
subiu o container, executou os comandos que a imagem descrevia e por fim encerrou o container.
Para listar todos os containers, mesmo os encerrados devemos executar:
docker ps -a
Você deve ver uma lista como essa:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 097c9116123b hello-world "/hello" 13 minutes ago Exited (0) 50 seconds ago vigorous_driscoll
Agora que você já sabe como rodar um container, vamos criar nossa própria imagem.
Crie um diretório para o projeto:
mkdir meu-app-node cd meu-app-node
Inicialize um projeto Node.js:
npm init -y
Instale o Express:
npm install express
Crie um arquivo server.js
com o seguinte código:
const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; app.get('/', (req, res) => { res.send('Olá, Docker!'); }); app.listen(PORT, () => { console.log('Servidor rodando em http://localhost:3000'); });
No diretório do projeto, crie um arquivo chamado Dockerfile
com o seguinte conteúdo:
# Usar a imagem oficial do Node.js FROM node:18 # Definir o diretório de trabalho dentro do container WORKDIR /app # Copiar os arquivos do projeto para dentro do container COPY package.json package-lock.json ./ # Instalar as dependências RUN npm install # Copiar todo o código fonte para o container COPY . . # Definir a porta que será exposta pelo container EXPOSE 3000 # Comando para rodar a aplicação CMD ["node", "server.js"]
Este Dockerfile cria uma imagem baseada no Node.js, copia os arquivos do projeto, instala as dependências e define o comando para iniciar a aplicação.
Crie a imagem:
No terminal, execute:
docker build -t meu-app-node .
Isso cria uma imagem chamada meu-app-node.
Execute o container:
Agora, execute o container com:
docker run -p 3000:3000 meu-app-node
A aplicação estará disponível em http://localhost:3000
.
Parando o container:
Para parar o container abra um novo terminar e execute:
docker ps
Você vai ver uma lista como a seguinte:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2b8452ce78b2 meu-app-node "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3000->3000/tcp loving_pascal
Execute o comando substituindo o nome do container pelo nome gerado para seu container:
docker stop loving_pascal
Para facilitar a inicialização, crie um arquivo docker-compose.yml:
version: '3' services: app: build: . ports: - "3000:3000" volumes: - .:/app command: ["node", "server.js"]
Inicie o container:
docker-compose up
Para parar o container basta digitar cmd + C
ou ctrl + C
ou abrir um novo terminar e executar:
docker-compose down
Aprenda comandos básicos do Docker: Explore outros comandos como docker logs
, docker rm
, e docker rmi
.
Crie um Dockerfile simples: Pratique a criação de Dockerfiles para diferentes tipos de aplicações (ex: Python, Ruby, PHP).
Use imagens oficiais do Docker Hub: Experimente rodar containers com imagens populares, como nginx
, mysql
, ou redis
.
Monte volumes básicos: Aprenda a usar volumes para persistir dados, como arquivos de banco de dados ou logs.
Configure portas e variáveis de ambiente: Pratique expor portas e passar variáveis de ambiente para containers.
Explore o Docker Compose para aplicações simples: Crie um arquivo docker-compose.yml
para rodar dois serviços (ex: uma aplicação web e um banco de dados).
Aprenda a limpar recursos: Use comandos como docker system prune
para remover containers, imagens e volumes não utilizados.
Teste multi-container simples: Crie uma aplicação básica com um frontend e um backend, cada um em seu próprio container.
Pratique com projetos pequenos: Crie um projeto pessoal simples (ex: um blog ou uma API) e containerize-o.
Explore a documentação oficial do Docker: Leia as seções básicas para entender melhor os conceitos e funcionalidades.
O Docker é uma ferramenta incrivelmente poderosa para desenvolvedores, simplificando a criação e o gerenciamento de ambientes de desenvolvimento. Com ele, você pode garantir que sua aplicação funcione de forma consistente em qualquer lugar, desde sua máquina local até servidores de produção.
Se você gostou deste tutorial, compartilhe com seus amigos. E não se esqueça de explorar outros tutoriais aqui no blog para continuar aprendendo!
Visualizações: 77
23 de março de 2025
18 de março de 2025
14 de março de 2025
27 de fevereiro de 2025
05 de abril de 2016