Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral
Objetivo: Usar o Proxy de Desenvolvimento com o Docker Compose
Tempo: 20 minutos
Plugins: Vários
Pré-requisitos:Configurar o Dev Proxy, o Docker e o Docker Compose instalados
Ao desenvolver aplicativos com o Docker, talvez você queira usar o Proxy de Desenvolvimento para testar como seu aplicativo lida com erros de API, limitação ou simular respostas de API. Este artigo mostra como usar o Proxy de Desenvolvimento com o Docker Compose em dois cenários:
- Proxy de desenvolvimento em execução em seu computador host, aplicativo em um contêiner
- Proxy de desenvolvimento em execução em um contêiner ao lado do contêiner do aplicativo
Cenário 1: Proxy de Desenvolvimento no host, aplicativo no contêiner
Nesse cenário, você executa o Proxy de Desenvolvimento diretamente em seu computador enquanto seu aplicativo é executado em um contêiner do Docker. Essa abordagem é útil quando você está desenvolvendo ativamente e deseja interagir diretamente com o Proxy de Desenvolvimento.
Configurar o contêiner do aplicativo
Crie um docker-compose.yaml arquivo que configure seu aplicativo para usar o Proxy de Desenvolvimento em execução no host:
services:
app:
build: .
environment:
# Point to Dev Proxy on the host machine
- HTTPS_PROXY=http://host.docker.internal:8000
- HTTP_PROXY=http://host.docker.internal:8000
# For Node.js applications
- NODE_TLS_REJECT_UNAUTHORIZED=0
extra_hosts:
# Ensure host.docker.internal resolves correctly on Linux
- "host.docker.internal:host-gateway"
Iniciar o Proxy de Desenvolvimento em seu host
Antes de iniciar o contêiner do aplicativo, inicie o Proxy de Desenvolvimento no computador host. No macOS e no Linux, associe o Proxy de Desenvolvimento a todas as interfaces de rede.
devproxy --ip-address 0.0.0.0
No Windows, você pode iniciar o Proxy de Desenvolvimento normalmente:
devproxy
Manipular certificados TLS/SSL
Quando seu aplicativo faz solicitações HTTPS por meio do Proxy de Desenvolvimento, o contêiner precisa confiar no certificado de Proxy de Desenvolvimento. Você tem duas opções:
Opção 1: Desabilitar validação de certificado (somente desenvolvimento)
Para testes rápidos, você pode desabilitar a validação de certificado em seu aplicativo. Para aplicativos Node.js, defina a variável de NODE_TLS_REJECT_UNAUTHORIZED=0 ambiente (já incluída no exemplo anterior). Para aplicativos .NET, você pode configurar seu cliente HTTP para ignorar a validação de certificado.
Cuidado
Nunca desabilite a validação de certificado no código de produção.
Opção 2: confiar no certificado do Dev Proxy no contêiner
Para uma configuração mais semelhante à produção, instale o certificado de Proxy de Desenvolvimento em seu contêiner. Primeiro, exporte o certificado do host e adicione-o à imagem do Docker. Consulte Usar o Proxy de Desenvolvimento com aplicativos .NET em execução no Docker para obter etapas detalhadas.
Iniciar seu aplicativo
Inicie o contêiner do aplicativo:
docker compose up
Seu aplicativo agora roteia todo o tráfego HTTP e HTTPS por meio do Proxy de Desenvolvimento em execução no host.
Cenário 2: Proxy de desenvolvimento e aplicativo em contêineres separados
Nesse cenário mais avançado, o Proxy de Desenvolvimento e seu aplicativo são executados em contêineres do Docker. Essa abordagem é útil para pipelines de CI/CD ou quando você deseja um ambiente de desenvolvimento totalmente em contêineres.
Criar o volume de certificados
Ambos os contêineres precisam de acesso ao certificado de Proxy de Desenvolvimento. Crie um volume do Docker para compartilhá-lo:
docker volume create devproxy-cert
Criar o script do ponto de entrada
Crie um entrypoint.sh script que instale o certificado de Dev Proxy quando o contêiner do aplicativo for iniciado:
#!/bin/bash
set -e
# Wait for the Dev Proxy certificate to be available
echo "Waiting for Dev Proxy certificate..."
while [ ! -f /cert/rootCert.pfx ]; do
sleep 1
done
# Convert PFX to PEM format
openssl pkcs12 \
-in /cert/rootCert.pfx \
-out /usr/local/share/ca-certificates/dev-proxy-ca.crt \
-clcerts \
-nokeys \
-passin pass:""
# Update system certificates
update-ca-certificates
echo "Dev Proxy certificate installed"
# Execute the main command
exec "$@"
Torne o script executável:
chmod +x entrypoint.sh
Crie o Dockerfile do aplicativo
Crie um Dockerfile para o seu aplicativo que inclua os pré-requisitos de instalação do certificado:
# Example for a Node.js application
FROM node:20
# Install certificate tools
RUN apt-get update && apt-get install -y \
openssl \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy application files
COPY package*.json ./
RUN npm install
COPY . .
# Copy entrypoint script
COPY entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["node", "index.js"]
Criar a configuração do Docker Compose
Crie um docker-compose.yaml arquivo que defina ambos os serviços:
services:
dev-proxy:
image: ghcr.io/dotnet/dev-proxy:latest
ports:
- "8000:8000"
- "8897:8897"
volumes:
# Mount your Dev Proxy configuration
- ./devproxyrc.json:/config/devproxyrc.json
# Share the certificate with the app container
- devproxy-cert:/home/devproxy/.config/dev-proxy/rootCert
# Generate the certificate on startup
command: ["--install-cert"]
stdin_open: true
tty: true
app:
build: .
depends_on:
- dev-proxy
environment:
# Point to the Dev Proxy container
- HTTPS_PROXY=http://dev-proxy:8000
- HTTP_PROXY=http://dev-proxy:8000
volumes:
# Mount the certificate volume
- devproxy-cert:/cert:ro
volumes:
devproxy-cert:
Criar um arquivo de configuração do Proxy de Desenvolvimento
Crie um devproxyrc.json arquivo no mesmo diretório que o :docker-compose.yaml
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.24.0/rc.schema.json",
"urlsToWatch": [
"https://api.example.com/*",
"https://graph.microsoft.com/*"
],
"plugins": [
{
"name": "GenericRandomErrorPlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
}
]
}
Iniciar os contêineres
Inicie ambos os contêineres com o Docker Compose:
docker compose up
O "Dev Proxy" é iniciado primeiro e gera seu certificado. O contêiner do aplicativo aguarda o certificado, instala-o e inicia o aplicativo. Todas as solicitações HTTP e HTTPS do aplicativo agora são roteada por meio do Proxy de Desenvolvimento.
Interagir com o Proxy Dev
Como o Proxy de Desenvolvimento é executado em um contêiner, você pode interagir com ele de várias maneiras:
Usando o terminal
Anexar ao contêiner do Proxy de Desenvolvimento:
docker attach <container-name>
Usando a API de Proxy de Desenvolvimento
A API de Proxy de Desenvolvimento é exposta na porta 8897. Você pode usá-lo para controlar o Proxy de Desenvolvimento programaticamente:
# Start recording
curl -X POST http://localhost:8897/proxy/recording/start
# Stop recording
curl -X POST http://localhost:8897/proxy/recording/stop
Para obter mais informações, consulte a API de Proxy de Desenvolvimento.