Como implantar um servidor Internet Caddy com o Docker – CloudSavvy IT
[ad_1]
Caddie é um servidor internet moderno e standard projetado para alto desempenho e segurança de memória. Ele é escrito em Cross, é executado sem dependências, possui suporte interno para renderização de website estático com Markdown e oferece HTTPS automático.
A Caddy está focada em fornecer uma experiência simples de gerenciamento de servidor que oferece funcionalidade útil por padrão. Pode ser mais fácil de configurar e manter do que sistemas rivais como Apache e NGINX. Neste artigo, mostraremos como executar seu próprio servidor com configuração mínima usando o Docker com o imagem oficial do Caddy.
Selecionando uma Tag de Imagem
A imagem Caddy vem em alguns sabores diferentes. A versão mais recente do Caddy é compartilhada por todos, que é v2.4 no momento da redação. Você pode usar 2.4.x
(substituindo x
com uma versão de patch específica), 2.4
ou 2
para fixar no componente main, secundário ou de patch.
O Caddy funciona com hosts Linux e Home windows Docker. Alpine Linux, Home windows Server Core 1809 e a versão Home windows Server Core 2016 LTSC são as opções atuais do sistema operacional. Fazendo referência a uma tag Caddy nua, como caddy:2
selecionará a imagem apropriada para sua plataforma; você pode usar variações como 2.4-alpine
ou 2.4.6-windowsservercore-1809
em vez de ser mais explícito.
Iniciando um servidor básico
O Caddy é fornecido em uma configuração pronta para uso. A imagem do Docker servirá seu conteúdo da internet a partir do /usr/proportion/caddy
diretório. Você pode adicionar seus arquivos ao contêiner montando um diretório de host nesse caminho.
O Caddy também possui diretórios de configuração e dados separados nos quais você deve montar os volumes do Docker. O /config
diretório é opcional, mas recomendado; ele armazena seus arquivos de configuração, mas como eles são convertidos para solicitações de API, eles não precisam ser persistidos estritamente. O /information
A localização é important, pois contém certificados TLS gerados pelo Caddy, chaves privadas e a configuração ultimate do servidor que foi processada pela API.
docker run -d -p 80:80 -v ./my-website:/usr/proportion/caddy/ -v caddy-config:/config -v caddy_data:/information caddy:2
Como servidor HTTP, o Caddy escuta na porta 80 por padrão. Isso está vinculado à porta 80 em seu host através do -p
bandeira no exemplo acima.
Agora você pode visitar http://localhost
em seu navegador para acessar seu website. Você deve ver o index.html
do seu diretório de conteúdo montado. Você obterá a página de destino padrão do Caddy se não vincular nada a /usr/proportion/caddy
.
Configurando HTTPS
Um dos principais recursos do Caddy é o suporte automático a TLS, portanto, seria negligente não usá-lo. Você precisa vincular a porta 443 além da porta 80 para que o Caddy possa receber tráfego HTTPS. A única outra alteração é fornecer o nome de domínio em que seu website será veiculado. Todo o resto é tratado por Caddy.
docker run -d -p 80:80 -p 443:443 -v ./my-website:/usr/proportion/caddy/ -v caddy-config:/config -v caddy_data:/information caddy:2 caddy file-server --domain instance.com
O comando após o nome da imagem ser passado por docker run
para o ponto de entrada da imagem do Docker. Neste caso, significa caddy file-server ...
é executado como o processo de primeiro plano do contêiner. O --domain
sinalizador é usado para definir o domínio para o qual o Caddy adquirirá um certificado HTTPS. Você deve verificar se tem um registro DNS do tipo A referenciando o IP do seu host Docker antes de iniciar o contêiner.
Adicionando seu próprio arquivo Caddy
Caddy normalmente u.s.a. um arquivo de configuração chamado Caddyfile
para definir rotas e alterar as configurações do servidor. A imagem do Docker carrega o Caddyfile em /and many others/caddy/Caddyfile
. Monte seu próprio arquivo neste caminho para substituir as configurações padrão que servem /usr/proportion/caddy
:
docker run -d -p 80:80 -p 443:443 -v ./Caddyfile:/and many others/caddy/Caddyfile -v caddy_data:/information caddy:2
Aqui está um Caddyfile simples para um website chamado instance.com
com HTTPS ativado:
electronic mail [email protected] instance.com reply "It really works!"
Essa configuração mínima outline o endereço de email world para [email protected]
. Este email será usado ao fazer solicitações de certificados Let’s Encrypt. O instance.com
block fornece regras de roteamento para o tratamento de solicitações do Caddy ao seu domínio. Nesse caso, o servidor sempre responderá com uma mensagem estática.
Mais informações sobre o Caddyfile estão disponíveis em a documentação do Caddy. O Docker não altera nada aqui: desde que seu arquivo esteja disponível em /and many others/caddy/Caddyfile
o Caddy irá carregá-lo e usá-lo.
Criando imagens do Docker para seus websites
Até agora, analisamos o uso ad-hoc do Caddy iniciando contêineres diretamente da imagem base do Caddy. Na prática, é mais provável que você queira criar imagens dedicadas para seus websites para não precisar montar seu conteúdo toda vez que iniciar um contêiner.
A imagem base do Caddy está pronta para ser estendida com suas próprias instruções para adicionar conteúdo e configuração. Aqui está um exemplo Dockerfile que inclui um Caddyfile e copia o conteúdo do seu website para um diretório personalizado:
FROM caddy:2.4 WORKDIR /my-site COPY Caddyfile /and many others/caddy/Caddyfile COPY *.html ./ COPY *.css css/ COPY *.js js/
Agora você pode criar e executar sua imagem para iniciar um servidor Caddy pré-configurado para seu website:
docker construct -t my-site:newest . docker run -p 80:80 -p 443:443 -v caddy_data:/information my-site:newest
Em muitos websites, você desejará incluir módulos Caddy extras para funcionalidade adicional. A melhor maneira de lidar com isso em seu Dockerfile é por meio do Caddy’s dedicado builder
imagem. Isso inclui as ferramentas necessárias para montar uma instância personalizada do Caddy com os módulos especificados instalados.
Docker’s construções de vários estágios são ideais para este fluxo de trabalho. Aqui está um exemplo que adiciona Caddy’s replace-response
módulo para que você possa reescrever partes dos dados de resposta usando regras em um Caddyfile:
FROM caddy:2.4-builder AS caddy-build RUN xcaddy construct --with github.com/caddyserver/replace-response FROM caddy:2.4 COPY --from=caddy-build /usr/bin/caddy /usr/bin/caddy WORKDIR /my-site COPY Caddyfile /and many others/caddy/Caddyfile COPY *.html ./ COPY *.css css/ COPY *.js js/
O primeiro estágio de construção produz um binário Caddy com o replace-response
módulo embutido. xcaddy
comando disponível na imagem do construtor coloca sua saída em /usr/bin/caddy
. O segundo estágio u.s.a. a imagem de base padrão do Caddy, mas substitui o binário incluído pelo personalizado. Seu conteúdo é então colocado em camadas normalmente; o resultado é um servidor Caddy que incorpora módulos extras enquanto mantém suporte overall para o restante dos recursos na imagem base do Docker.
Resumo
Caddy é um servidor internet moderno que é uma ótima opção para servir eficientemente arquivos estáticos. Ele oferece um conjunto atraente de recursos com suporte de primeira classe para HTTPS, renderização de modelo integrado e integração Markdown.
Usar o Docker para hospedar seu servidor Caddy oferece uma maneira rápida de implantar uma instância sem baixar manualmente os binários ou instalar arquivos de serviço. É uma boa maneira de experimentar o Caddy ou executá-lo junto com as cargas de trabalho existentes em uma configuração de cluster.
Como o Caddy pode atuar como um proxy reverso e balanceador de carga, você pode usá-lo como um ponto de entrada para rotear o tráfego para seus outros contêineres do Docker. O standard Caddy Docker Proxy módulo estende os recursos internos do servidor com Suporte semelhante ao Traefik para descoberta automática de rotas por meio de rótulos de contêiner do Docker.
Caddy leva um Abordagem de API em primeiro lugar para configuração que simplifica o gerenciamento de instâncias em execução dentro de um contêiner. Você não precisa se preocupar muito em injetar arquivos de configuração ou gerenciar volumes. Contanto que o /information
for persistido, você poderá fazer solicitações de API para modificar a operação do Caddy sem precisar usar a CLI do Docker. Isso pode torná-lo uma escolha melhor para conteinerização quando comparado a opções mais tradicionais, como Apache e NGINX.
[ad_2]
Fonte da Notícia