Criando um Ambiente (LAMP) PHP, MySQL e Apache com Docker

Quando iniciamos com a primeira coisa que fazemos é configurar nosso ambiente de desenvolvimento, muitas vezes usando o XAMP ou outro similar.

Porém com o docker muita coisa é melhorada, inclusive a possibilidade de se ter o máximo de proximidade do ambiente de desenvolvimento final. Mas as vezes só queremos um ambiente dev comum para testar e rodar nossas aplicações em nosso dia a dia.

E é exatamente isso que o artigo de hoje traz. um Lamp completo, com inserção no banco de dados, volume e atualização em tempo real entre container e sua aplicação na máquina local..

Criando o ambiente

Neste ambiente utilizamos basicamente três imagens, o php 7.4 com apache, a imagem do MySQL e por ultimo a do phpMyAdmin para que possamos acessar nosso banco de dados.

Para o apache e php 7.4 utilizaremos nossa própria imagem no Docker Hub que pode ser importado diretamente no docker com o docker pull arthurelinux/php74apache

Mas para simplificar usaremos diretamente no arquivo docker-compose.yml então crie um arquivo com esse nome na raiz do projeto e cole o seguinte código.

version: '3.1'

services:
  mysql:
    image: mysql
    expose:
      - "3306"
    environment:
      MYSQL_ROOT_PASSWORD: 12345
      MYSQL_DATABASE: admin
    volumes:
      - ./db/ :/docker-entrypoint-initdb.d/
    

  phpmyadmin:
      image: phpmyadmin
      restart: always
      ports:
        - 8082:80
      environment:
        - PMA_ARBITRARY=1

  php-7.4:
    image: arthurelinux/php74apache
    ports:
      - 8080:80
    volumes:
      - ./log/apache2:/var/log/apache2
      - ./html:/var/www/html
      
    depends_on:
      - mysql
      - phpmyadmin

Entendendo os arquivo

Vamos por partes para que possa entender o arquivo, no primeiro bloco configuramos o banco mysql, que cria um banco com nome admin, e que o usuário root é tem por senha 12345. Isso foi definido no environment outra coisa interessante é que o mesmo está já criando uma estrutura no banco um esquema sql.

Logo, crie na raiz do seu projeto uma pasta com o nome de db e ponha um arquivo schema.sql com o create da tabela que você quer que seja criada no momento que iniciar seu container.

No segundo bloco está o phpmyadmin que basicamente abrirá na porta 8082 do seu navegado, altere essa posta caso ela esteja ocupada na sua máquina, No acesso irá perguntar por host, usuário e senha coloque o host: mysql , usuário: root senha: 12345 ele irá abrir normalmente.

Por ultimo você terá as especificações do php7.4 e do apache que usa nossa imagem por base, é importante notar que na raiz do seu projeto deve conter um arquivo php.ini com as configurações que seu php do projeto precisa, ele será lido pelo container como padrão. O apache irá abrir na porta 8080 do seu navegador e vale lembrar que se está estiver ocupada, troque no arquivo docker-compose.yml.

Outro ponto é que na raiz uma pasta com nome html deve ser criada, e tudo o que está nelá será reproduzida no apache, digamos que ela se torna a pasta específica do apache, que no caso do linux é no caminho /var/www/html.

PRONTO!

Agora é só utilizar nosso ambiente da maneira que desejar! se gostou compartilha o artigo com outras pessoas e até a próxima!