Guias de Linguagem e Framework...
Deploy de App Laravel em Contêineres Back4App com Docker
33 min
back4app containers é uma plataforma poderosa para hospedar aplicações laravel com sua capacidade de implantar automaticamente aplicativos laravel 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 laravel 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 laravel de exemplo funcionando nos contêineres back4app, acesse https //github com/templates back4app/containers laravel sample 1 prepare sua aplicação laravel a estrutura do projeto verifique se sua aplicação laravel segue uma estrutura de diretórios adequada, com todos os arquivos e pastas necessários, como app , routes , resources , e public , organizados adequadamente b dependências verifique se todas as dependências necessárias estão listadas no composer json arquivo, incluindo suas versões corretas certifique se de que você instalou todas as dependências usando composer install para gerar um composer lock arquivo c 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 d configuração do servidor (se aplicável) se sua aplicação laravel inclui um servidor personalizado (por exemplo, apache ou nginx), certifique se de que ele está corretamente configurado para servir sua aplicação laravel teste seu servidor localmente para garantir que ele funcione como esperado e otimização de aplicação otimize sua aplicação laravel implementando as melhores práticas de desempenho use ferramentas como lighthouse para auditar sua aplicação e resolver quaisquer problemas de desempenho ou acessibilidade f 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 laravel minuciosamente, você pode prosseguir para a próxima etapa, que é criar um dockerfile para seu projeto 2 dockerização dockerizar uma aplicação laravel 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 laravel regular 1 crie um novo arquivo chamado dockerfile (sem nenhuma extensão de arquivo) no diretório raiz da sua aplicação laravel 2 defina a imagem base comece o dockerfile especificando uma imagem base usando o comando from para uma aplicação laravel típica, a imagem base deve ser uma imagem php, por exemplo, php 8 1 apache from php 8 1 apache 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 seus arquivos de aplicação serão armazenados e executados workdir /var/www/html 4 copie os arquivos do projeto copie todos os arquivos do diretório da aplicação laravel para o contêiner docker usando o comando copy copy 5 instale as dependências use o comando run para instalar as dependências necessárias para sua aplicação laravel usando composer install run apt get update && apt get install y \\ unzip \\ libzip dev \\ && docker php ext install zip \\ && php r "copy('https //getcomposer org/installer', 'composer setup php');" \\ && php composer setup php install dir=/usr/local/bin filename=composer \\ && php r "unlink('composer setup php');" \\ && composer install no scripts no autoloader prefer dist 6 configure o servidor apache ative o módulo de reescrita do apache, configure o arquivo 000 default conf para incluir as configurações adequadas do apache para laravel e configure as variáveis de ambiente do apache run a2enmod rewrite copy /docker/apache/000 default conf /etc/apache2/sites available/ env apache document root /var/www/html/public 7 gere a chave da aplicação laravel o laravel requer uma chave de aplicação para criptografar sessões de usuário e outros dados sensíveis use o comando run para gerar a chave da aplicação run php artisan key\ generate 8 construa a aplicação laravel adicione um comando run para construir sua aplicação laravel usando seu script de construção, tipicamente composer dump autoload , php artisan config\ cache , php artisan route\ cache e php artisan view\ cache run composer dump autoload \\ && php artisan config\ cache \\ && php artisan route\ cache \\ && php artisan view\ cache 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 80 expose 80 10 inicie o servidor use o comando cmd para especificar o comando que inicia o servidor para servir sua aplicação laravel construída cmd \["apache2 foreground"] o dockerfile completo para uma aplicação laravel regular deve ser assim \#dockerfile example on running php laravel app using apache web server from php 8 1 apache \# install necessary libraries run apt get update && apt get install y \\ libonig dev \\ libzip dev \# install php extensions run docker php ext install \\ mbstring \\ zip \# copy laravel application copy /var/www/html \# set working directory workdir /var/www/html \# install composer copy from=composer\ latest /usr/bin/composer /usr/bin/composer \# install dependencies run composer install \# change ownership of our applications run chown r www data\ www data /var/www/html run docker php ext install mbstring copy env example env run php artisan key\ generate \# expose port 80 expose 80 \# adjusting apache configurations run a2enmod rewrite copy apache config conf /etc/apache2/sites available/000 default conffrom php 8 1 apache workdir /var/www/html copy run apt get update && apt get install y \\ unzip \\ libzip dev \\ && docker php ext install zip \\ && php r "copy('https //getcomposer org/installer', 'composer setup php');" \\ && php composer setup php install dir=/usr/local/bin filename=composer \\ && php r "unlink('composer setup php');" \\ && composer install no scripts no autoloader prefer dist run a2enmod rewrite copy /docker/apache/000 default conf /etc/apache2/sites available/ env apache document root /var/www/html/public run php artisan key\ generate \\ && composer dump autoload \\ && php artisan config\ cache \\ && php artisan route\ cache \\ && php artisan view\ cache expose 80 cmd \["apache2 foreground"] 3 teste seu projeto localmente antes de implantar sua aplicação laravel nos contêineres back4app, é importante testá la localmente usando docker isso ajuda a garantir que sua aplicação funcione como esperado e ajuda a identificar e corrigir quaisquer problemas antes da implantação crie a imagem docker para sua aplicação laravel no seu terminal, navegue até o diretório raiz do seu projeto e execute o seguinte comando, substituindo seu nome do app pelo nome da sua aplicação 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, 80) para uma porta na sua máquina local (por exemplo, 8000) teste sua aplicação abra um navegador da web e navegue até http //localhost 8080 http //localhost 8000/ para visualizar sua aplicação laravel certifique se de que tudo funcione como esperado se você encontrar algum problema, resolva o antes de passar para a próxima etapa 4 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, vendor , env , node modules , 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) 5 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 6 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 7 solução de problemas comuns erros comuns de implantação ao executar um app laravel nos contêineres back4app estão listados aqui https //www back4app com/docs containers/troubleshooting outros erros comuns possíveis ao implantar uma aplicação laravel são configuração de porta incorreta as aplicações laravel 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 80 para a porta 80) dependências incompatíveis ou ausentes certifique se de que todas as dependências necessárias estão listadas no composer 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 env comando não foi possível determinar de forma confiável o nome de domínio totalmente qualificado do servidor" erro problema este erro ocorre quando o apache não consegue determinar o nome de domínio totalmente qualificado (fqdn) do servidor solução para suprimir este erro, você pode definir a servername diretiva globalmente na configuração do apache modifique o arquivo de configuração do apache ( apache config conf ) da seguinte forma apache config conf servername localhost \<virtualhost 80> documentroot /var/www/html/public \<directory /var/www/html/public> allowoverride all order allow,deny allow from all \</directory> \# log access messages to access log file errorlog /var/log/apache2/access log customlog /var/log/apache2/access log combined \# log error messages to error log file loglevel error errorlog /var/log/apache2/error log \</virtualhost> 500 erro interno do servidor problema este erro indica que há um problema com a configuração do servidor ou com a própria aplicação solução verifique os logs de erro do apache ( /var/log/apache2/error log ) para mensagens de erro mais específicas isso pode ajudar a identificar a causa raiz do erro verifique se o arquivo de configuração do apache ( apache config conf ) está configurado corretamente com as diretrizes apropriadas de documentroot e directory para sua aplicação laravel certifique se de que as extensões php necessárias estão instaladas e habilitadas no dockerfile use o comando docker php ext install para instalar as extensões necessárias, e o comando run a2enmod para habilitar os módulos do apache verifique as permissões de arquivo e a propriedade dos arquivos da sua aplicação laravel use o comando chown para garantir que os arquivos sejam de propriedade do usuário apropriado ( www data na maioria dos casos) problemas de configuração do apache problema configurações do apache incorretas ou mal configuradas podem levar a erros ou comportamentos inesperados solução verifique novamente o arquivo de configuração do apache ( apache config conf ) para garantir que ele aponte corretamente para o diretório documentroot da aplicação laravel e tenha as diretrizes apropriadas de directory habilite o módulo rewrite executando run a2enmod rewrite no dockerfile isso é necessário para que o roteamento do laravel funcione corretamente dependências ausentes ou incorretas problema se sua aplicação laravel tiver dependências ausentes ou incorretas, isso pode resultar em erros ou comportamentos inesperados solução verifique o composer json arquivo para garantir que todas as dependências necessárias estejam listadas, incluindo suas versões corretas execute composer install para instalar as dependências e gerar um composer lock arquivo verifique se as extensões php necessárias estão instaladas e habilitadas no dockerfile usando o comando docker php ext install problemas de permissão de arquivo problema permissões de arquivo incorretas podem causar problemas com o armazenamento de arquivos ou cache do laravel solução use o comando chown no dockerfile para alterar a propriedade dos arquivos da aplicação laravel para o usuário apropriado ( www data na maioria dos casos) certifique se de que os diretórios de armazenamento e cache tenham as permissões corretas você pode executar comandos chmod no dockerfile para definir as permissões apropriadas falhas na aplicação ou exceções não tratadas exceções não tratadas ou falhas no código da sua aplicação laravel podem causar falhas na implantação ou comportamentos inesperados 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 seu nome da aplicação para ver se há erros ou exceções sendo lançadas use uma ferramenta como o sentry para rastrear e monitorar erros na sua aplicação configuração do servidor se a sua aplicação laravel inclui uma configuração de servidor personalizada (por exemplo, apache ou nginx), certifique se de que está corretamente configurada no dockerfile e que os módulos ou configurações necessários estão instalados permissões de arquivo incorretas permissões de arquivo incorretas podem causar erros em tempo de execução ao implantar uma aplicação laravel nos contêineres back4app certifique se de que os diretórios e arquivos necessários tenham as permissões corretas, conforme especificado na documentação do laravel limitações de memória se a sua aplicação estiver ficando sem memória ao ser implantada nos contêineres back4app, considere aumentar o limite de memória no dockerfile usando as configurações do php ini problemas de rede se a sua aplicação laravel depende de serviços ou apis externas, certifique se de que estão corretamente configurados e acessíveis a partir do ambiente dos contêineres back4app use os comandos de rede do docker para solucionar quaisquer problemas de rede 8 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 9 aplicação de exemplo para um projeto de aplicação laravel de exemplo, você pode ir para https //github com/templates back4app/containers python flask sample