Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
De relance
Objetivo: Usa Dev Proxy com o Docker Compose
Tempo: 20 minutos
Plugins: Vários
Pré-requisitos:Configurar Dev Proxy, Docker e Docker Compose instalados
Ao desenvolver aplicações com Docker, pode querer usar Dev Proxy para testar como a sua aplicação lida com erros de API, throttling ou para simular respostas de API. Este artigo mostra-te como usar Dev Proxy com o Docker Compose em dois cenários:
- Proxy de desenvolvimento a correr na tua máquina anfitriã, aplicação num contentor
- Proxy de desenvolvimento a correr num container juntamente com o container da sua aplicação
Cenário 1: Proxy de desenvolvimento no host, aplicação no contentor
Neste cenário, executa o Dev Proxy diretamente na sua máquina enquanto a aplicação corre num contentor Docker. Esta abordagem é útil quando está a desenvolver ativamente e quer interagir diretamente com o Proxy de Desenvolvimento.
Configure o seu contentor de aplicações
Crie um docker-compose.yaml ficheiro que configure a sua aplicação para usar o Proxy de Desenvolvimento a correr no seu 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"
Inicie Proxy de Desenvolvimento no seu host
Antes de iniciar o teu contentor de aplicações, inicia o Dev Proxy na tua máquina anfitriã. No macOS e Linux, vincule o Dev Proxy a todas as interfaces de rede:
devproxy --ip-address 0.0.0.0
No Windows, podes iniciar o Dev Proxy normalmente:
devproxy
Lidar com certificados TLS/SSL
Quando a sua aplicação faz pedidos HTTPS através do Dev Proxy, o contentor precisa de confiar no certificado Dev Proxy. Tem duas opções:
Opção 1: Desativar a validação de certificados (apenas desenvolvimento)
Para testes rápidos, pode desativar a validação de certificados na sua aplicação. Para Node.js aplicações, defina a NODE_TLS_REJECT_UNAUTHORIZED=0 variável de ambiente (já incluída no exemplo anterior). Para aplicações .NET, pode configurar o seu cliente HTTP para saltar a validação de certificados.
Atenção
Nunca desative a validação de certificados em código de produção.
Opção 2: Confiar no certificado Dev Proxy no contentor
Para uma configuração mais semelhante à produção, instala o certificado Dev Proxy no teu contentor. Primeiro, exporta o certificado do teu host e adiciona-o à tua imagem Docker. Consulte Usar Proxy de Desenvolvimento com aplicações .NET a correr no Docker para passos detalhados.
Inicie a sua candidatura
Inicie o seu contentor de aplicação:
docker compose up
A sua aplicação agora encaminha todo o tráfego HTTP e HTTPS através do Dev Proxy a correr no seu host.
Cenário 2: Proxy de desenvolvimento e aplicação em contentores separados
Neste cenário mais avançado, tanto o Proxy de Desenvolvimento como a sua aplicação correm em contentores Docker. Esta abordagem é útil para pipelines CI/CD ou quando se pretende um ambiente de desenvolvimento totalmente containerizado.
Crie o volume de certificado
Ambos os contentores precisam de acesso ao certificado Dev Proxy. Crie um volume Docker para o partilhar:
docker volume create devproxy-cert
Criar o script de entrada
Crie um entrypoint.sh script que instale o certificado Dev Proxy quando o seu contentor de aplicação inicia:
#!/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
Criar a aplicação Dockerfile
Crie um Dockerfile formulário para a sua candidatura que inclua os pré-requisitos para 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 ficheiro 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 Dev Proxy
Crie um devproxyrc.json ficheiro no mesmo diretório do seu docker-compose.yaml:
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.1.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 contentores com o Docker Compose:
docker compose up
O Dev Proxy começa primeiro e gera o seu certificado. O teu contentor de aplicação espera pelo certificado, instala-o e depois inicia a aplicação. Todos os pedidos HTTP e HTTPS da sua aplicação são agora encaminhados através do Dev Proxy.
Interagir com Dev Proxy
Como o Dev Proxy corre num contentor, pode interagir com ele de várias formas:
Utilização do terminal
Anexar ao contentor Dev Proxy:
docker attach <container-name>
Usando a API de Proxy Dev
A API Dev Proxy está exposta na porta 8897. Podes usá-lo para controlar o Proxy de Desenvolvimento de forma programática:
# Start recording
curl -X POST http://localhost:8897/proxy/recording/start
# Stop recording
curl -X POST http://localhost:8897/proxy/recording/stop
Para mais informações, consulte Dev Proxy API.