Guias de Linguagem e Framework...
Implantando Aplicativos Next.js em Contêineres Docker
24 min
back4app containers é uma plataforma poderosa para hospedar aplicações next js com sua capacidade de implantar automaticamente aplicativos next js em contêineres docker, você pode lançar seu projeto em um ambiente escalável e flexível com facilidade neste guia, vamos orientá lo pelo processo de preparação e implantação de sua aplicação next js no back4app containers, cobrindo tudo, desde projetos simples até configurações mais complexas começaremos com os preparativos necessários, depois passaremos para a dockerização da aplicação, testando a localmente, enviando o projeto para o github, configurando o projeto no back4app containers, monitorando a implantação e solucionando problemas comuns se você tiver alguma dúvida ou comentário, sinta se à vontade para participar da conversa no canal #containers na comunidade back4app no slack a qualquer momento, você também pode nos contatar pelo e mail community\@back4app com a qualquer momento, se você quiser verificar um projeto next js de exemplo funcionando nos contêineres back4app, acesse https //github com/templates back4app/containers nextjs sample https //github com/templates back4app/containers nextjs sample 1 prepare sua aplicação next js a estrutura do projeto verifique se sua aplicação next js segue uma estrutura de diretório adequada, com todos os arquivos e pastas necessários, como pages , public , components , e styles , organizados de forma apropriada o ponto de entrada principal para sua aplicação deve ser o arquivo pages/index js ou pages/index jsx b dependências verifique se todas as dependências necessárias estão listadas no package json arquivo, incluindo suas versões corretas certifique se de que você instalou todas as dependências usando npm install ou yarn install para gerar um package lock json ou yarn lock arquivo c processo de build para projetos mais complexos que envolvem um processo de build, certifique se de que seus scripts e configurações de build (por exemplo, webpack, babel ou next js) estão corretamente configurados você deve ser capaz de executar o processo de build localmente sem problemas d variáveis de ambiente se sua aplicação depende de variáveis de ambiente, certifique se de que você tem um env arquivo com as variáveis necessárias definidas ao implantar em contêineres back4app, você precisará configurar essas variáveis de ambiente nas configurações de implantação e configuração do servidor (se aplicável) se sua aplicação next js inclui um servidor personalizado (por exemplo, express), certifique se de que ele está corretamente configurado para servir sua aplicação next js teste seu servidor localmente para garantir que funcione como esperado f otimização da aplicação otimize sua aplicação next js minimizando tamanhos de pacotes, usando divisão de código e implementando melhores práticas de desempenho use ferramentas como lighthouse para auditar sua aplicação e resolver quaisquer problemas de desempenho ou acessibilidade g compatibilidade entre navegadores teste seu aplicativo em vários navegadores e dispositivos para garantir a renderização e funcionalidade adequadas depois de revisar e preparar completamente seu aplicativo next js, você pode prosseguir para a próxima etapa, que é criar um dockerfile para seu projeto 2 dockerização dockerizar um aplicativo next js envolve criar um dockerfile no diretório raiz do seu projeto o dockerfile contém instruções para construir uma imagem docker do seu aplicativo, que pode ser implantada nos contêineres back4app aqui está uma explicação detalhada de como criar um dockerfile para um aplicativo next js típico 1 crie um novo arquivo chamado dockerfile (sem nenhuma extensão de arquivo) no diretório raiz do seu aplicativo next js 2 defina a imagem base comece o dockerfile especificando uma imagem base usando o comando from para um aplicativo next js típico, a imagem base deve ser uma imagem node js, por exemplo, node 14 ou node 16 from node 14 3 defina o diretório de trabalho use o comando workdir para definir o diretório de trabalho para seu aplicativo dentro do contêiner docker é aqui que os arquivos do seu aplicativo serão armazenados e executados workdir /app 4 copie package json e package lock json copie os arquivos package json e package lock json do seu computador local para o contêiner docker usando o comando copy esses arquivos são necessários para instalar as dependências do seu aplicativo copy package json / 5 instale as dependências use o comando run para instalar as dependências do seu aplicativo a partir do arquivo package json isso é tipicamente feito usando npm ci, que instala as versões exatas das dependências especificadas no arquivo package lock json run npm ci 6 copie o restante dos arquivos do projeto use o comando copy novamente para copiar os arquivos e pastas restantes do seu computador local para o contêiner docker copy 7 construa o aplicativo next js adicione um comando run para construir seu aplicativo next js usando seu script de construção, tipicamente npm run build isso gera uma versão pronta para produção do seu aplicativo next js na pasta next run npm run build 8 configure o servidor você precisa de um servidor para servir seu aplicativo next js construído uma escolha comum é o servidor embutido do next js primeiro, instale o globalmente no contêiner docker usando o comando run run npm install g next 9 exponha a porta do servidor use o comando expose para especificar a porta na qual seu servidor será executado dentro do contêiner docker por exemplo, você pode usar a porta 3000 expose 3000 10 inicie o servidor use o comando cmd para especificar o comando que inicia o servidor para servir seu aplicativo next js construído com o servidor embutido do next js, você pode especificar o script de início e o número da porta cmd \["next", "start", " p", "3000"] o dockerfile completo para uma aplicação típica next js deve ser assim from node 14 workdir /app copy package json / run npm ci copy run npm run build run npm install g next expose 3000 cmd \["next", "start", " p", "3000"] outros exemplos de dockerfiles que você pode usar como referência exemplo 1 usando um servidor nginx se você preferir usar um servidor nginx para servir sua aplicação next js, pode criar um dockerfile de múltiplas etapas neste caso, você primeiro construirá a aplicação next js e depois copiará os arquivos gerados para o servidor nginx \# stage 1 build the next js application from node 14 as builder workdir /app copy package json / run npm ci copy run npm run build \# stage 2 set up the nginx server from nginx\ stable alpine copy from=builder /app/ next /usr/share/nginx/html copy from=builder /app/public /usr/share/nginx/html/ next/static copy nginx conf /etc/nginx/conf d/default conf certifique se de criar um arquivo nginx conf apropriado para configurar corretamente o servidor nginx exemplo 2 usando um servidor personalizado se você tiver um servidor personalizado configurado para sua aplicação next js, pode modificar o dockerfile de acordo aqui está um exemplo usando um arquivo server js personalizado from node 14 workdir /app copy package json / run npm ci copy run npm run build expose 3000 cmd \["node", "server js"] neste exemplo, o servidor personalizado é iniciado com o node server js comando em vez de usar o servidor next js 3 construa e execute o contêiner docker após criar o dockerfile, você pode construir a imagem docker e executar um contêiner a partir dela use os seguintes comandos para construir e executar o contêiner docker build t your image name docker run p 3000 3000 your image name substitua "your image name" por um nome para sua imagem docker uma vez que o contêiner esteja em execução, você pode acessar sua aplicação next js em http //localhost 3000 http //localhost 3000 no seu navegador 4 teste seu projeto localmente antes de implantar sua aplicação next js nos contêineres back4app, é importante testá la localmente usando docker isso ajuda a garantir que sua aplicação funcione como esperado e ajuda você a identificar e corrigir quaisquer problemas antes da implantação construa a imagem docker para sua aplicação next js no seu terminal, navegue até o diretório raiz do seu projeto e execute o seguinte comando, substituindo your app name pelo nome da sua aplicação docker build t seu nome do app execute o contêiner docker localmente em seguida, execute o seguinte comando para iniciar o contêiner docker localmente este comando mapeia a porta exposta do contêiner (por exemplo, 3000) para uma porta na sua máquina local (por exemplo, 3000) docker run p 3000 3000 seu nome do app teste sua aplicação abra um navegador da web e navegue até http //localhost 3000 http //localhost 3000 para visualizar sua aplicação next js certifique se de que tudo funcione como esperado se você encontrar algum problema, resolva o antes de passar para a próxima etapa 5 publique seu projeto no github crie um gitignore arquivo no diretório raiz do seu projeto para excluir arquivos desnecessários ou sensíveis do seu repositório (por exemplo, node modules , env , build , etc ) inicialize um repositório git, faça o commit dos arquivos do seu projeto e envie os para um repositório remoto (por exemplo, no github) git add git commit m "initial commit" git remote add origin \<your remote repo url> git push u origin master 6 implante sua aplicação nos contêineres back4app após criar sua conta back4app, você pode seguir os passos listados na documentação 1 conecte seu repositório github com o back4app https //www back4app com/docs containers/integrate with github 2 prepare seu projeto para implantação https //www back4app com/docs containers/prepare your deployment em resumo, os contêineres seguirão as instruções detalhadas no seu dockerfile e começarão a criar seu app 7 monitore a implantação e resolva possíveis erros fique de olho nos logs de implantação e no status no painel de contêineres do back4app resolva quaisquer erros ou problemas que surgirem durante a implantação no caso de projetos mais complexos, certifique se de que todos os serviços necessários (como bancos de dados ou apis externas) estejam corretamente configurados e acessíveis 8 solução de problemas comuns erros comuns de implantação ao executar um app next js nos contêineres do back4app estão listados aqui https //www back4app com/docs containers/troubleshooting outros possíveis erros comuns ao implantar uma aplicação next js são configuração de porta incorreta aplicações next js devem ser configuradas para rodar em uma porta especificada quando implantadas nos contêineres do back4app se a aplicação ainda não estiver acessível, verifique o dockerfile para garantir que a porta correta esteja exposta (por exemplo, expose 3000 para a porta 3000) dependências incompatíveis ou ausentes certifique se de que todas as dependências necessárias estejam listadas no arquivo package json e que suas versões sejam compatíveis entre si e com o código da sua aplicação dependências ausentes ou incompatíveis podem levar a erros em tempo de execução variáveis de ambiente ou configuração inválidas verifique se sua aplicação depende de variáveis de ambiente específicas ou arquivos de configuração e assegure se de que estão configurados corretamente no ambiente do back4app containers defina quaisquer variáveis de ambiente necessárias no seu dockerfile usando o comando env falhas na aplicação ou exceções não tratadas exceções não tratadas ou falhas no código da sua aplicação next js podem causar falhas na implantação ou comportamento inesperado examine os logs da sua aplicação em busca de mensagens de erro e resolva quaisquer problemas no seu código verifique os logs do contêiner executando docker logs your app name para ver se há erros ou exceções sendo lançados use uma ferramenta como o sentry para rastrear e monitorar erros na sua aplicação configuração de renderização do lado do servidor se sua aplicação next js usa renderização do lado do servidor (ssr), assegure se de que sua configuração de ssr está corretamente configurada no seu dockerfile e que inicia sua aplicação usando o ponto de entrada correto 9 escale sua aplicação para projetos mais complexos que requerem recursos adicionais ou escalonamento horizontal/vertical, considere atualizar seu plano do back4app containers para lidar com o aumento de tráfego e carga 10 aplicação de exemplo para um projeto de aplicação next js de exemplo, você pode ir para https //github com/templates back4app/containers nextjs sample