Guias de Linguagem e Framework...
Guia Técnico de Dockerização e Implantação de Apps ReactJS
23 min
back4app containers é uma plataforma poderosa para hospedar aplicações react com sua capacidade de implantar automaticamente aplicativos react dockerizados, 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 react 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 no back4app community no slack para discussões específicas sobre react no back4app containers a qualquer momento, você também pode nos contatar em community\@back4app com a qualquer momento, se você quiser verificar um projeto react de exemplo funcionando no back4app containers, vá para https //github com/templates back4app/containers react sample 1 prepare sua aplicação react a estrutura do projeto verifique se sua aplicação react segue uma estrutura de diretório adequada, com todos os arquivos e pastas necessários, como src , public , components , e assets , organizados de forma apropriada o ponto de entrada principal para sua aplicação deve ser o src/index js ou src/index jsx arquivo 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 create react app) estão configurados corretamente 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 react inclui um servidor personalizado (por exemplo, express), certifique se de que ele está configurado corretamente para servir sua aplicação react teste seu servidor localmente para garantir que ele funcione como esperado f otimização de aplicação otimize sua aplicação react 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 sua aplicação em vários navegadores e dispositivos para garantir a renderização e funcionalidade adequadas depois de revisar e preparar sua aplicação react, você pode prosseguir para a próxima etapa, que é criar um dockerfile para seu projeto 2 dockerização dockerizar uma aplicação react envolve criar um dockerfile no diretório raiz do seu projeto o dockerfile contém instruções para construir uma imagem docker da sua aplicação, que pode ser implantada nos contêineres back4app aqui está uma explicação detalhada de como criar um dockerfile para uma aplicação react comum 1 crie um novo arquivo chamado dockerfile (sem nenhuma extensão de arquivo) no diretório raiz da sua aplicação react 2 defina a imagem base comece o dockerfile especificando uma imagem base usando o comando from para uma aplicação react típica, 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 sua aplicação dentro do contêiner docker é aqui que os arquivos da sua aplicação serão armazenados e executados workdir /app 3 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 da sua aplicação copy package json / 4 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 5 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 6 construa a aplicação react adicione um comando run para construir sua aplicação react usando seu script de build, tipicamente npm run build isso gera uma versão pronta para produção da sua aplicação react na pasta build run npm run build 7 configure o servidor você precisa de um servidor para servir sua aplicação react construída uma escolha comum é o serve primeiro, instale o globalmente no contêiner docker usando o comando run run npm install g serve 8 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 5000 expose 5000 9 inicie o servidor use o comando cmd para especificar o comando que inicia o servidor para servir sua aplicação react construída com serve, você pode especificar a flag s para uma aplicação de página única e a pasta de build como a fonte cmd \["serve", " s", "build", " l", "5000"] o dockerfile completo para uma aplicação react regular deve ser assim from node 14 workdir /app copy package json / run npm ci copy run npm run build run npm install g serve expose 5000 cmd \["serve", " s", "build", " l", "5000"] outros exemplos de dockerfiles que você pode usar como referência exemplo 1 aplicação react básica este dockerfile é para uma aplicação react simples ele instala os pacotes necessários do arquivo package json, copia os arquivos do projeto, serve a aplicação react usando nginx expondo a porta 80 o cmd especifica o comando para iniciar o servidor nginx \# stage 1 build the react application from node 14 as build workdir /app copy package json / run npm install copy run npm run build \# stage 2 serve the react application using nginx from nginx\ stable alpine copy from=build /app/build /usr/share/nginx/html \# copy the default nginx conf provided by the docker image copy nginx/nginx conf /etc/nginx/conf d/default conf expose 80 cmd \["nginx", " g", "daemon off;"] exemplo 2 aplicação react com um servidor personalizado este dockerfile é para uma aplicação react mais complexa que usa um servidor personalizado (por exemplo, express) ele instala os pacotes necessários do arquivo package json, copia os arquivos do projeto e expõe a porta 8000 para o servidor personalizado o cmd especifica o comando para iniciar o servidor personalizado \# base image from node 14 \# working directory workdir /app \# copy package json and package lock json and install dependencies copy package json / run npm ci \# copy the rest of the project files copy \# expose the server port expose 8000 \# command to start the server cmd \["npm", "run", "server"] 4 teste seu projeto localmente antes de implantar sua aplicação react 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 crie a imagem docker para sua aplicação react 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 your app name 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 your app name teste sua aplicação abra um navegador da web e navegue até http //localhost 3000 http //localhost 3000 para visualizar sua aplicação react 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 2 prepare seu projeto para implantação 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 aplicativo react em contêineres back4app estão listados aqui outros erros comuns possíveis ao implantar uma aplicação react são usando npm start em vez de npm run build npm start é recomendado quando você tem um cenário de desenvolvimento, mas para ambientes de produção é mais adequado usar npm run build além disso, esse comando de construção resultará em menor consumo de memória servir arquivos estáticos usando nginx outra boa prática é servir arquivos estáticos com um servidor de aplicação como o nginx configuração de porta incorreta aplicações react devem ser configuradas para rodar em uma porta especificada quando implantadas em contêineres 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 5000 para a porta 5000) dependências incompatíveis ou ausentes certifique se de que todas as dependências necessárias estão listadas no arquivo package json e que suas versões são 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 dos contêineres back4app defina quaisquer variáveis de ambiente necessárias no seu dockerfile usando o comando env falhas de aplicação ou exceções não tratadas exceções não tratadas ou falhas no código da sua aplicação react 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 react usa renderização do lado do servidor (ssr), certifique se de que sua configuração de ssr esteja corretamente configurada no seu dockerfile e que inicie sua aplicação usando o ponto de entrada correto se você encontrar quaisquer outros problemas ao implantar sua aplicação react nos contêineres back4app, entre em contato com a equipe de suporte do back4app em community\@back4app com 9 escale sua aplicação para projetos mais complexos que requerem recursos adicionais ou escalonamento horizontal/vertical, considere atualizar seu plano de contêineres back4app para lidar com o aumento de tráfego e carga 10 aplicação de exemplo para um projeto de aplicação django de exemplo, você pode ir para https //github com/templates back4app/containers python flask sample