Ambiente PHP com Podman e Toolbox - Segunda tentativa

leandroramos
editado abril 2020 em SilverBlue

Fedora Silverblue: Ambiente PHP com Podman - Segunda tentativa

Na primeira tentativa, usei o Podman para subir um contêiner com o LAMP completo, com Apache, MySQL e PHP. Fiquei satisfeito com o resultado, mas não gostei do fato de usar apenas um contêiner para a aplicação e para o banco de dados (apesar de fazer isso a vida inteira antes de tentar usar algum contêiner, instalando tudo no sistema host).
Agora vou fazer uma nova tentativa, tentando manter as coisas mais simples, para que elas possam crescer com a mesma simplicidade. O que pretendo fazer nesta tentativa:

  • Instalar o PHP CLI em toolbox, com as extensões necessárias
  • Usar o servidor embutido no PHP para servir a aplicação, dispensando Apache/NGINX
  • Usar um contêiner no Podman para o servidor de banco de dados MariaDB
  • Manter o ambiente simples para que novos servidores possam ser adicionados futuramente

Instalando o PHP na toolbox

Obs.: Se quiser ver sobre a toolbox, veja no meu último post.

toolbox create -c fedora32
toolbox enter -c fedora32

Instalando o PHP e NodeJS

Dentro da toolbox:

sudo dnf install php-cli php-mysqlnd php-mbstring php-mcrypt php-zip php-json composer nodejs nodejs-yarn

Rodando os programas no host

Criando aliases para os comandos:

alias node="toolbox run -c fedora32 node"
alias php="toolbox run -c fedora32 php" 
alias yarn="toolbox run -c fedora32 yarnpkg"
alias npm="toolbox run -c fedora32 npm"
alias composer="toolbox run -c fedora32 composer"

Rodando os comandos no host:

Testando o servidor web do PHP

Vou usar um código sofisticado para testar o servidor embutido do PHP, rodando a partir do sistema host, ou seja, fora da toolbox fedora32.

<?php
phpinfo();

Vou salvar o arquivo em ~/projetos/php/exemplo-toolbox-podman/index.php, e executar o servidor do php:

php -S localhost:8080

Resultado no navegador, em http://localhost:8080

Preparando o MariaDB com Podman

Vou usar o Podman para o MariaDB. Como a toolbox não tem serviços do systemd, prefiro usar um contêiner do dockrehub com o MariaDB.

Baixando MariaDB do dockerhub:

podman pull mariadb

Criando o diretório onde quero salvar os dados do banco de dados:

mkdir ~/.local/share/mysql

Rodando o contêiner mariadb:

podman run -d --privileged --name mariadb -p 3306:3306 -v /home/leandroramos/.local/share/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=senhadanasa mariadb

Atenção: vejam o que fiz para conseguir montar os volumes e salvar arquivos do conteiner no host usando volumes.

Criando bancos de dados no cliente DBeaver

Agora já posso usar meu cliente de bancos de dados para acessar o MariaDB na porta 3306 do localhost e criar meus bancos de dados, vejam nas imagens:


Reparem, na imagem abaixo, que os arquivos do banco de dados estão sendo gravados no meu host:

Conclusão

Considero o ambiente atual mais simples e mais fácil para mim, pois ainda estou aprendendo a lidar com os contêineres. Mas vou evoluindo e mostrando para vocês.
No momento estou em condições de fazer o código PHP e Node e me conectar ao MariaDB tranquilamente. Se eu tiver algum problema com esse ambiente, reportarei para vocês também. Abraços.

Comentários