Editado 2 meses atrás por ExtremeHow Equipe Editorial
Docker DesktopDesenvolvimentoUsoDesenvolvimento de SoftwareDevOpsAmbiente LocalComputação em NuvemVirtualizaçãoProdutividadeFluxo de Trabalho
Tradução atualizada 2 meses atrás
Desenvolvimento local refere-se ao processo de escrever e testar seu código em sua máquina local antes de implantá-lo em um servidor de produção. O Docker Desktop é uma ferramenta útil que permite aos desenvolvedores executar aplicativos em contêiner localmente, tornando o processo de desenvolvimento local mais eficiente, escalável e gerenciável. Este documento fornece um guia detalhado sobre como usar o Docker Desktop para desenvolvimento local, mesmo que você seja novo nesses conceitos. Ao final do guia, você deve ter uma compreensão clara do Docker, Docker Desktop e como usá-los efetivamente no seu fluxo de trabalho de desenvolvimento local. Vamos começar.
Antes de mergulhar no Docker Desktop, é importante entender o que é o Docker. Docker é uma plataforma que permite desenvolver, enviar e executar aplicativos em contêineres. Os contêineres permitem que você embale um aplicativo com todas as suas dependências e configurações em uma única unidade que pode ser executada de maneira consistente em diferentes ambientes. Essa consistência garante que o aplicativo se comporte da mesma forma durante o desenvolvimento, teste e produção.
Docker Desktop é um aplicativo para construção e compartilhamento de aplicativos e microsserviços em contêiner para máquinas MacOS e Windows. Docker Desktop inclui Docker Engine, Docker CLI Client, Docker Compose, Docker Content Trust, Kubernetes e Credential Helper. É uma solução abrangente para desenvolvedores que precisam construir, gerenciar e implantar aplicativos em contêineres localmente. Com o Docker Desktop, você obtém uma interface direta e um rico conjunto de ferramentas para gerenciar contêineres, tornando-o uma escolha preferida para desenvolvedores que trabalham em projetos locais.
Primeiro, você precisa instalar o Docker Desktop em sua máquina. Siga estas etapas:
docker --version
. Isso deve exibir a versão do Docker se estiver instalado corretamente.Após a instalação, você pode precisar fazer alguma configuração inicial:
Todo contêiner que você executa no Docker é construído usando um Dockerfile. Um Dockerfile é um arquivo de texto simples que contém instruções para construir uma imagem Docker. Aqui está um exemplo básico de um Dockerfile para um aplicativo Python simples:
# Use uma imagem base oficial do Python como imagem principal FROM python:3.8-slim # Define o diretório de trabalho WORKDIR /app # Copia o conteúdo do diretório atual para o contêiner em /app COPY . /app # Instala os pacotes necessários especificados em requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Torna a porta 80 disponível para o mundo fora deste contêiner EXPOSE 80 # Executa app.py quando o contêiner é iniciado CMD ["python", "app.py"]
# Use uma imagem base oficial do Python como imagem principal FROM python:3.8-slim # Define o diretório de trabalho WORKDIR /app # Copia o conteúdo do diretório atual para o contêiner em /app COPY . /app # Instala os pacotes necessários especificados em requirements.txt RUN pip install --no-cache-dir -r requirements.txt # Torna a porta 80 disponível para o mundo fora deste contêiner EXPOSE 80 # Executa app.py quando o contêiner é iniciado CMD ["python", "app.py"]
Este Dockerfile realiza as seguintes tarefas:
FROM python:3.8-slim
: Isso indica ao Docker para usar a imagem base Python 3.8 slim.WORKDIR /app
: Isso define o diretório de trabalho dentro do contêiner para /app.COPY . /app
: Isso copia o conteúdo do diretório atual (arquivos da sua aplicação) para dentro do contêiner.RUN pip install --no-cache-dir -r requirements.txt
: Isso instala os pacotes Python necessários listados no arquivo requirements.txt.EXPOSE 80
: Isso permite que o aplicativo se comunique através da porta 80.CMD ["python", "app.py"]
: Isso especifica o comando para ser executado quando o contêiner inicia.Depois de ter um Dockerfile, você pode construir uma imagem Docker. Vá para o diretório que contém seu Dockerfile no terminal e execute o seguinte comando:
docker build -t my-python-app .
A descrição detalhada deste comando é a seguinte:
docker build
é o comando para construir uma imagem Docker a partir de um Dockerfile.-t my-python-app
rotula a imagem com um nome, neste caso, "my-python-app"..
Especifica a localização do contexto de construção, que é o diretório atual.Depois de construir sua imagem, você pode executá-la como um contêiner. Use o seguinte comando para iniciar um contêiner a partir da sua imagem:
docker run -d -p 4000:80 my-python-app
Explicação deste comando:
docker run
executa o comando para iniciar um novo contêiner.-d
Executa o contêiner em modo isolado (em segundo plano).-p 4000:80
mapeia a porta 4000 no host para a porta 80 no contêiner, permitindo acessar o aplicativo em localhost:4000.my-python-app
refere-se à imagem Docker que você criou anteriormente.Ao trabalhar em desenvolvimento local, especialmente com aplicativos que consistem em vários serviços ou microsserviços, o processo de gerenciamento desses serviços pode ser simplificado usando o Docker Compose. Docker Compose é uma ferramenta para definir e executar aplicativos Docker de múltiplos contêineres. Aqui está um exemplo de arquivo docker-compose.yml
:
version: '3' services: web: image: my-python-app ports: - "4000:80" database: image: postgres environment: POSTGRES_USER: example POSTGRES_PASSWORD: example
version: '3' services: web: image: my-python-app ports: - "4000:80" database: image: postgres environment: POSTGRES_USER: example POSTGRES_PASSWORD: example
neste exemplo:
my-python-app
que você construiu, e ele mapeia a porta 4000 no host para a porta 80 no contêiner.Para iniciar seu aplicativo de múltiplos contêineres especificado no docker-compose.yml
, execute o seguinte comando no terminal:
docker-compose up
Este comando cria, (re)cria, inicia e anexa contêineres a um serviço. Você pode parar o aplicativo usando docker-compose down
, que irá parar e remover contêineres.
Uma vez que seus contêineres estão em execução, você pode precisar realizar uma variedade de tarefas de gerenciamento. Aqui estão alguns comandos comuns:
docker ps
: Lista todos os contêineres em execução.docker stop <container-id>
: Para um contêiner em execução usando seu ID.docker start <container-id>
: Inicia um contêiner parado usando seu ID.docker logs <container-id>
: Exibe os logs do contêiner, o que é útil para depuração.docker exec -it <container-id> /bin/bash
: Abre uma instância de shell dentro de um contêiner em execução, permitindo que você inspecione e interaja manualmente com ele.docker rm <container-id>
: Remove um contêiner parado do seu sistema.docker rmi <image-id>
: Remove a imagem do seu sistema, liberando espaço em disco.Se você quiser compartilhar suas imagens Docker com outros ou usá-las em outros sistemas, você pode enviá-las para o Docker Hub, um repositório baseado em nuvem. Aqui está como você pode fazer isso:
docker login
.docker tag my-python-app <your-username>/my-python-app
.docker push <your-username>/my-python-app
.Uma vez enviada, sua imagem estará disponível em sua conta do Docker Hub, e você poderá puxá-la para outras máquinas usando docker pull <your-username>/my-python-app
.
Sempre inclua seus Dockerfiles no seu sistema de controle de versão. Isso garante que a configuração exata do ambiente do contêiner seja rastreada com o código-fonte do seu aplicativo. Esta prática ajudará qualquer pessoa que trabalhe no seu aplicativo, incluindo você mesmo no futuro, a criar ambientes facilmente.
Imagens Docker grandes demoram mais tempo para construir, transferir e executar. Portanto, reduzir o tamanho da imagem é muito importante para a eficiência. Você pode reduzir o tamanho da imagem por:
Aqui está um exemplo de um Dockerfile de múltiplos estágios:
# Estágio de construção FROM golang:1.15 as builder WORKDIR /app COPY . . RUN go build -o myapp # Estágio final FROM alpine:latest WORKDIR /app COPY --from=builder /app/myapp . ENTRYPOINT ["./myapp"]
# Estágio de construção FROM golang:1.15 as builder WORKDIR /app COPY . . RUN go build -o myapp # Estágio final FROM alpine:latest WORKDIR /app COPY --from=builder /app/myapp . ENTRYPOINT ["./myapp"]
A segurança não deve ser negligenciada ao trabalhar com Docker. Aqui estão algumas práticas para reforçar a segurança:
USER
no Dockerfile.Estabeleça um sistema de log e monitoramento para o seu ambiente Docker. Considere usar ferramentas como o driver de log nativo do Docker, Prometheus para métricas e Grafana para visualizações de dados impressionantes. Com monitoramento adequado, você obterá insights sobre o comportamento e desempenho dos seus contêineres, permitindo reagir rapidamente a quaisquer problemas.
O Docker Desktop é uma ferramenta essencial para desenvolvedores que desejam aproveitar a tecnologia de contêineres em suas máquinas de desenvolvimento local. Ao permitir que aplicativos sejam executados em contêineres separados, o Docker Desktop simplifica a configuração e o gerenciamento de ambientes de desenvolvimento. Ele aumenta a estabilidade e reduz o problema de garantir que funcione na minha máquina ao empacotar tudo o que é necessário para executar o aplicativo.
Este guia fornece uma visão abrangente do Docker Desktop, desde a instalação e configuração até a criação e execução de contêineres e melhores práticas para usar o Docker no desenvolvimento local. Ao integrar o Docker Desktop em seus processos de desenvolvimento, você ganha um poderoso aliado na construção, teste e implantação de aplicativos robustos de forma mais eficiente.
Como com qualquer tecnologia, a chave para dominar o Docker, e por extensão o Docker Desktop, é a prática consistente e o aprendizado contínuo. Quanto mais você aplicar esses princípios e explorar o vasto ecossistema de ferramentas e recursos do Docker, mais proficiente você se tornará.
Se você encontrar algo errado com o conteúdo do artigo, você pode