Construa seu site Astro com Docker
Docker é uma ferramenta para construir, implantar e executar aplicações usando contêiners.
Imagens e contêiners Docker podem ser implantados em diversas plataformas, como AWS, Azure e Google Cloud. Esta receita não explica como implantar seu site em uma plataforma específica, mas mostra como configurar o Docker para seu projeto.
Pré-requisitos
Seção intitulada Pré-requisitos- Docker instalado na sua máquina local. Você pode encontrar instruções de instalação para o seu sistema operacional aqui.
- Um Dockerfile no seu projeto. Você pode aprender mais sobre Dockerfiles aqui e usar os exemplos de Dockerfiles na seção a seguir como ponto de partida.
Criando um Dockerfile
Seção intitulada Criando um DockerfileCrie um arquivo chamado Dockerfile
no diretório raiz do seu projeto. Esse arquivo contém as instruções para construir seu site, que podem variar conforme suas necessidades. Este guia não pode explicar todas as opções possíveis, mas fornecerá pontos de partida para modos SSR e estático.
Se você estiver usando outro gerenciador de pacotes além do npm, ajuste os comandos conforme necessário.
Este Dockerfile irá construir seu site e servi-lo usando Node.js na porta 4321
, e, portanto, exige o adaptador Node instalado em seu projeto Astro.
Esses são apenas exemplos de Dockerfiles. Você pode personalizá-los conforme suas necessidades. Por exemplo, você pode usar outra imagem, como node:lts-alpine
:
Adicionando um .dockerignore
Seção intitulada Adicionando um .dockerignoreAdicionar um arquivo .dockerignore
ao seu projeto é uma boa prática. Este arquivo descreve quais arquivos ou pastas devem ser ignorados nos comandos COPY
ou ADD
do Docker, de forma semelhante ao .gitignore
. Isso acelera o processo de build e reduz o tamanho da imagem final.
Este arquivo deve estar no mesmo diretório que o próprio Dockerfile
. Leia a documentação .dockerignore
para mais informações.
Estático
Seção intitulada EstáticoApache (httpd)
Seção intitulada Apache (httpd)O seguinte Dockerfile irá construir seu site e servir usando Apache httpd na porta 80
com a configuração padrão.
Use esta abordagem para sites simples que não precisam de nenhuma configuração especial. Para sites mais complexos, é recomendado usar uma configuração personalizada, seja no Apache ou no NGINX.
Para construir o Dockerfile acima, você também precisará criar um arquivo de configuração para o NGINX. Crie uma pasta chamada nginx
no diretório raiz do seu projeto e um arquivo chamado nginx.conf
dentro dela.
Build Multiestágios (usando SSR)
Seção intitulada Build Multiestágios (usando SSR)Aqui está um exemplo de um Dockerfile mais avançado que, graças a build multiestágios do Docker, otimiza o processo de build do seu site ao não reinstalar as dependências npm quando apenas o código-fonte muda. Isso pode reduzir o tempo de build em minutos, dependendo do tamanho das suas dependências.
Receita
Seção intitulada Receita-
Construa seu contêiner executando o seguinte comando no diretório raiz do seu projeto. Use qualquer nome em
<your-astro-image-name>
:Isso gerará uma imagem que você pode rodar localmente ou implantar em uma plataforma de sua escolha.
-
Para rodar sua imagem como um contêiner local, use o seguinte comando.
Substitua
<local-port>
por uma porta aberta em sua máquina. Substitua<container-port>
com a porta exposta pelo seu contêiner Docker (4321
,80
ou8080
nos exemplos acima).Agora você pode acessar seu site em
http://localhost:<local-port>
. -
Agora com seu site construído e empacotado com sucesso em um contêiner, você pode implantá-lo em um provedor de nuvem. Consulte o guia de implantação Google Cloud para um exemplo, e a página Deploy your app na documentação Docker.