Guia passo a passo: Criando um Container Docker PHP do zero

Aprenda a criar, configurar e executar um container Docker com instruções do PHP.

Publicado em

Antigamente para executar scripts em PHP era necessário ter uma versão específica do PHP instalada no computador do desenvolvedor, o que dificultava a manutenção de sistemas legados e o desenvolvimento de projetos modernos, visto que atualizar a versão do PHP impactava em outros projetos já existentes.

A gente também tinha um sério problema de quando outro desenvolvedor era integrado ao time, ele passava horas senão dias configurando o seu computador para que a aplicação funcionasse conforme o esperado. Em outras palavras, ele teria que baixar dlls, arquivos de configuração e demais recursos necessários.

Surgiram alguns servidores pré-configurados como o LAMPP e XAMPP, por exemplo, que até nos davam uma possibilidade de mudar de versão, porém, ainda sim era um pouco ineficaz e gerava alguns problemas de dependências.

Felizmente hoje nós temos o Docker e Podman, que nos auxiliam a lidar com diferentes infraestrutura e configurações de aplicações complexas. Basta configurar um arquivo, montar uma imagem e executá-la, para que a nossa aplicação rode conforme esperado.

Com o Docker, a gente monta apenas um arquivo como o Dockerfile e específica tudo o que precisamos, assim qualquer desenvolvedor executa esse arquivo para que a aplicação comece a ser executada, sem a necessidade de passar dias configurando um sistema.

Instalando o Docker

Antes de mais nada vamos partir do ponto que você já tenha o Docker instalado no seu sistema, de qualquer forma, no vídeo abaixo você confere um bom tutorial.

Caso esteja utilizando o Linux, certifique-se de que tenha permissão para rodar os comandos utilizados abaixo ou defina o utilize o sudo ou faça uma configuração para utilizar o Docker sem sudo.

Criando um script PHP PHP

Crie uma pasta no seu computador e dentro dela uma outra com o nome app. Dentro da pasta app insira o comando abaixo para exibir uma simples mensagem na tela.

Dentro da pasta app crie um arquivo chamado index.php e insira o código abaixo.

<?php
    echo "Olá, mundo!";

Criando o Dockerfile

Primeiramente certifique-se de que o seu Docker esteja executando, pode ser necessário executar o Loucher do aplicativo caso ele não esteja configurado para iniciar com o sistema.

Agora na raiz do seu projeto crie um arquivo chamado Dockerfile, mantendo a inicial na maiúscula. Insira os comandos abaixo e salve o arquivo.

FROM php:8.2-cli

COPY ./app /usr/src/app

WORKDIR /usr/src/app

CMD [ "php", "./index.php" ]

Vamos entender os comandos passo a passo:

  • FROM - Aqui especificamos qual a imagem que vamos utilizar. Definimos a versão 8.2 do PHP;
  • COPY - Aqui estamos copiando tudo o que está dentro da pasta app do nosso projeto para a pasta usr/src/app. Por convenção utilizamos o usr/...mas você pode configurar a pasta que desejar para a sua aplicação;
  • WORKDIR - Definimos qual a pasta padrão do nosso container, sempre que a gente rodar um comando ou chamar um arquivo, ele vai tentar executar dentro desta pasta sem a necessidade de especificar um subdiretório;
  • CMD - Basicamente informamos qual o comando que a gente gostaria de executar, nesse caso, a gente vai executar o comando php e especificar o arquivo que desejamos.

Criando e executando a build

Agora que a gente tem nosso arquivo PHP e Docker devidamente configurado, chegou a hora de fazer a nossa build, para isso execute o comando abaixo.

docker build -t minha-imagem-php-8.2 .

Vamos entender o que é cada parte desse comando:

  • docker build - Chamamos o mecanismo de build do Docker;
  • -t minha-imagem-php-8.2 - O -t define a tag e logo a frente definimos o seu nome, isso é útil para atribuir nomes significativos para nossa aplicação;
  • . - Aqui definimos o que vamos levar para dentro do container e quais arquivos devemos considerar, nesse caso utilizamos apenas um ponto que representa todos os arquivos e pastas do diretório atual.

Executando a nossa imagem PHP do Docker

Uma vez a nossa imagem criada e construída, podemos executá-la através do comando abaixo. Você verá a nossa mensagem definida no arquivo .php sendo impressa no terminal.

docker run minha-imagem-php-8.2

Rodando um container docker com PHP
Rodando um container docker com PHP

Para debugar a sua aplicação, talvez seja necessário ter acesso ao terminal do seu container, para isso podemos utilizar a flag -it e definir qual shell desejamos utilizar.

docker run -it minha-imagem-php-8.2 bash

Executando comandos dentro do container docker
Executando comandos dentro do container docker

Abrindo o script no navegador

Até aqui a gente viu como executar os comandos via terminal, porém queremos que o nosso script seja aberto no navegador, afinal, estamos criando uma aplicação web.

Vamos modificar o nosso arquivo Dockerfile para rodar uma imagem do Apache, expor a porta 80 e por fim iniciar o servidor.

Uma alteração necessária é que aqui o nosso workdir passa a ser /var/www/html obrigatoriamente.

# Use a imagem PHP com Apache
FROM php:8.2-apache

# Copie seu código-fonte para o contêiner
COPY ./app /var/www/html

WORKDIR /var/www/html

# Exponha a porta 80 para acesso via navegador
EXPOSE 80

# Execute o servidor web Apache
CMD ["apache2-foreground"]

Agora vamos criar uma nova build.

docker build -t minha-imagem-php-apache .

Agora devemos iniciar um novo servidor. Perceba que definimos a porta 8000 apontando para a porta 80 que adicionamos no nosso container.

docker run -p 8000:80 minha-imagem-php-apache

Acessando o endereço localhost:8000 no seu navegador, será possível ver a nossa mensagem impressa.

Gunnar Correa
Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. Fundador da SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.

Todos os nossos cursos em promoção
Todos os nossos cursos em promoção

Webstories

Todos os nossos cursos em promoção


Deixe um comentário
Aguarde...
Todos os nossos cursos em promoção