Como instalar PHP e Apache usando Docker

Neste tutorial você vai aprender como instalar PHP e Apache usando Docker! Inicialmente, faremos o download da imagem Docker contendo o PHP e o Apache. Em seguida, criaremos um container para rodar o PHP e o Apache no Docker. E, por fim, você aprenderá diversos comandos para gerenciar seu servidor Apache junto ao PHP.

Ou seja, ao final desse tutorial você terá um servidor Web Apache rodando e com o PHP instalado!

Este tutorial é baseado no vídeo “Como Instalar o PHP e Apache usando Docker“, disponível no Canal da Homehost no Youtube!

Tópicos

O que são o PHP, o Apache e o Docker?

O PHP, é uma linguagem de programação muito utilizada no Desenvolvimento Web. Se destaca por ser uma linguagem simples, versátil, e possuir uma integração muito simples com o HTML. O próprio WordPress é desenvolvido em PHP.

O PHP atua no lado do servidor, portanto, podemos criar sites dinâmicos, sistemas, extensões, e diversas outras aplicações web com esta linguagem. Apesar de ser uma linguagem simples, de fácil aprendizado, também possuí recursos avançados, para programadores mais experientes. Possuímos artigos falando sobre “O que é o PHP“, sobre a “versão 8.0 do PHP” e diversos outros tutoriais ensinando a programar com o PHP.

O Apache é um Servidor Web que permite e gerencia a comunicação entre máquina (servidor) e internet. Portanto, o apache é responsável por servi suas páginas na internet. Ele possuí código aberto e é gratuito para uso, até mesmo para uso comercial. Também é um software estável e bastante confiável, além de ser constantemente atualizado e muito popular.

O Docker é uma ferramenta que facilita o desenvolvimento de aplicações em ambientes isolados. Portanto, é muito utilizado para gerenciar a infraestrutura da aplicação de forma simples e fácil.

Para isso, o Docker cria “containers” a partir de imagens de uma aplicação. Dessa forma, podemos reproduzir essa mesma aplicação em diversas plataformas, de qualquer porte. Portanto, uma vez funcionando a aplicação na sua máquina, você conseguirá rodar essa aplicação em qualquer outro ambiente com Docker.

Por causa dessas características, o Docker vem sendo cada vez mais utilizado e se tornando um ferramenta importante para os desenvolvedores. Entender isso é muito importante para aprender como instalar o PHP e o apache usando o Docker!

O que é um Container Docker?

Segundo a descrição do próprio Docker sobre o que são contêineres:

Um contêiner é uma unidade padrão de software que empacota o código e todas as suas dependências para que o aplicativo seja executado de forma rápida e confiável de um ambiente de computação para outro.

Em geral, um container Docker nada mais é que um ambiente isolado. Seu funcionamento pode se assemelhar com o funcionamento das máquina virtuais (VMs). Entretanto, diferente das VMs, um container roda cada serviço de forma isolada e independente.

No ecossistema do Docker, podemos utilizar o site DockerHub para encontrar imagens prontas para utilizarmos, junto a suas documentações. O Dockerhub é um repositório publico do Docker, com diversas imagens disponíveis. Portanto, você pode utilizar uma imagem Docker oficial do próprio PHP e Apache para iniciar um container.

Instalação do PHP e Apache usando Docker

Antes de iniciarmos o tutorial, é necessário que o docker já esteja instalado em sua máquina. Você pode realizar o download e instalação do Docker Desktop através da Página “Get Started” do Docker.

Independente de você utilizar Linux, Mac ou Windows, os processos descritos aqui serão os mesmos.

Apesar do Docker Desktop nos permitir o uso do Docker de forma visual, vamos utilizar o prompt de comandos (terminal) para interagir com o Docker.

Primeiro Passo: Baixando a imagem Docker do PHP e do Apache

Para baixar o PHP no Docker, vamos utilizar uma imagem oficial do PHP, disponível no Dockerhub.

Imagem oficial do PHP no Dockerhub

Dentro da documentação no Dockerhub, podemos escolher entre diversas imagens do PHP. Para facilitar a nossa vida, vamos utilizar uma imagem do PHP já com o Apache. Portanto, recomendamos a imagem php:7.4.30-apache. Essa imagem contém a versão 7.4 do PHP.

Portanto, no seu prompt de comando (terminal), digite os seguintes comandos:

docker pull php:7.4.30-apache

Ao fazer isso, o docker irá buscar a imagem do PHP com Apache no Dockerhub e fará o download dela. Pode levar alguns minutos à depender de sua conexão com a internet.

Baixando a imagem do PHP com Apache no Docker

Após baixar a imagem, você pode usar o comando abaixo para listar as imagens Docker que você possuí na sua máquina:

docker images
Comando docker images

Segundo passo: Criando e rodando o Container do PHP e Apache no Docker

Após baixar a imagem do PHP e Apache, agora vamos criar um container com a imagem baixada.

Para isso vamos usar o comando Docker run com o repositório do PHP e a tag da imagem desejada. Como o apache é um Servidor Web, será utilizado porta da nossa rede. Portanto, vamos declarar uma porta.

Ao final, você pode utilizar o comando abaixo:

docker run -p 80:80 -d php:7.4.30-apache

O comando -p serve para definir a porta. No comando acima, utilizamos a porta 80:80 por ser um padrão para servidores apache e nos permitir um rápido acesso no navegador com o endereço “localhost“. Entretanto, você pode optar por outra porta.

Já o comando -d serve para definirmos o repositório e a tag da imagem desejada. No caso, vamos utilizar a imagem baixada anteriormente, ou seja: “php:7.4.30-apache“.

Ao executar o comando acima, o Docker já vai criar e rodar um container com o PHP e o Apache para você! Vale ressaltar que, caso a porta já esteja em uso por outro serviço, o seu container não rodará.

Comandos para utilizarmos o PHP e Apache usando Docker

Apesar de já estarmos com o Apache e o PHP rodando em nosso container, ainda é necessário aprender como interagir com eles. Portanto, nos tópicos a seguir, você aprenderá alguns comandos do Docker que serão bastante uteis para interagir com o nosso container do PHP e Apache.

Antes de prosseguir, é importante saber que a imagem do Apache também gera um volume para armazenamento de arquivos e dados. Isto é, dentro desse volume serão “armazenados” os arquivos do servidor Apache. Portanto, precisaremos enviar os arquivos de nossa máquina para dentro desse volume. Ao final desse tópico, dentre diversos outros comandos, você também aprenderá como enviar os arquivos para o diretório publico do servidor apache, e vice versa.

Listando, iniciando e finalizando os Containers no Docker

Para podermos listar todos os containers disponíveis no nosso Docker, devemos utilizar o comando:

docker ps -a

Observe que será listado todos os containers disponíveis, mesmo que não estejam em execução. Além disso, este comando também nos fornecerá o CONTAINER ID, que será útil para os próximos comandos.

Listando os containers do Docker com o comando docker ps -a

Para parar a execução de todos os containers no Docker, basta digitar o comando:

docker stop

Portanto, ao executar o comando, todos os container que estejam executando serão interrompidos.

Entretanto, caso queira para apenas um container específico, devemos indicar o ID do container. Por exemplo, para finalizar o container com id “fbdb894625f1”, executaríamos o seguinte comando:

docker stop fbdb894625f1

Para iniciar um container, o comando a ser utilizado é o start, seguido do id do container que você quer executar. Por exemplo:

docker start fbdb894625f1

Dessa forma, o container com o ID selecionado será iniciado e rodará na sua máquina!

Usando o docker stop e docker start

Enviando arquivos para o volume do servidor Apache

Conforme citamos anteriormente, a imagem do Apache também inicia um volume no Docker onde serão armazenado os arquivos do nosso servidor Apache. Portanto, podemos utilizar o próprio docker para acessar e interagir com o diretório desse volume.

Vale ressaltar, que o Apache utiliza o diretório “/www/html/” como raiz dos arquivos do nosso site. Portanto, para acessar esse diretório usando o docker, precisaremos do ID do containers. Portanto, utilizando o id “fbdb894625f1” como exemplo, utilizaremos como caminho:

fbdb894625f1:/var/www/html

Para prosseguir, é necessário que o container com o PHP e o Apache já esteja rodando, e que você saiba o ID deste container.

Enviando os arquivos da máquina local para o container

Inicialmente, acesse através do prompt de comando (terminal) o diretório da sua máquina onde estão os arquivos que você deseja enviar para o servidor apache. Por exemplo, para navegar até o diretório “C:/dev” do seu computador, você pode usar o comando abaixo:

cd C:\dev\

Em seguida, devo utilizar o comando “docker cp” para copiar os arquivos desejados para dentro do meu container. Por exemplo, caso dentro do meu diretório C:/dev/ eu tenha um arquivo chamado index.html, eu posso copiar ele para o volume do Apache da seguinte forma:

docker cp index.html fbdb894625f1:/var/www/html

Portanto, ao executar o comando acima, o arquivo “index.html” será copiado para o diretório “www/html” do Apache rodando em seu container!

Entretanto, caso você deseje copiar um diretório inteiro, uma pasta, para dentro do volume, bastaria chamar pelo nome da pasta no lugar do “index.html”. Por exemplo, caso dentro do meu diretório C:/dev/ tenha uma pasta chamada “bbbb”, eu posso copiar ela para o meu apache com o seguinte comando:

docker cp bbbb fbdb894625f1:/var/www/html

Acessando o terminal do Container

Nessa etapa, abra o Docker Desktop. Em seguida, vá até os “Containers”.

Abrindo o terminal do container com PHP e Apache no docker

Localize o container do PHP e Apache, e clique sobre o ícone da opção “open in terminal”. Dessa forma, o docker vai abrir um terminal do nosso container.

No terminal do Docker, digite o comando “bash”. Esse comando vai nos permitir usar os comandos do linux no terminal do docker. Portanto, ao executar o comando “ls” será listado todos os arquivos contidos nesta pasta.

Enviando os arquivos do container para a máquina local

Agora, você vai aprender como fazer o inverso do tópico anterior. Isto é, vamos transferir um arquivo contido no Servidor Apache do nosso container para um diretório do nosso computador. Portanto, utilizaremos o mesmo exemplo anterior. Ou seja, considere que já navegamos (através do terminal) até a pasta “C:\dev\” da nossa máquina e que nosso container já esta executando.

Digamos que, dentro do nosso Apache tenha um arquivo “index.html” e queremos copiar ele para dentro do diretório “C:/dev/” do nosso computador. Portanto, basta usar o comando anterior no terminal, porém da seguinte forma:

docker cp fbdb894625f1:/var/www/html/index.html . 

O ponto no final, significa que queremos que o arquivo seja copiado para dentro do diretória que estamos. Entretanto, você também pode declarar o diretório de forma direta:

docker cp fbdb894625f1:/var/www/html/index.html C:\dev\

Pronto! Agora o Docker copiou os arquivos do seu Container para a sua pasta na máquina local.

Próximos passos

Se você seguiu o passo a passo corretamente, então você conseguiu realizar a instalação do PHP e Apache usando Docker! Portanto, agora você tem uma forma de trabalhar com o PHP e com o Apache diretamente no Docker, de forma profissional e garantindo que vai rodar em qualquer outro ambiente!

Você pode usar esse servidor para criar diversas aplicações em PHP. Ou seja, você pode criar sites e até mesmo aplicações mais robustas, utilizando frameworks como o Laravel. Além disso, você também pode criar um container com o MySQL ou MariaDB e utilizar até mesmo o WordPress!

Você também aprendeu diversos conceitos e comandos para interagir com Docker diretamente pelo terminal! Entretanto, também recomendamos a leitura da seção “Get Started” da documentação oficial do Docker, que contém diversos exemplos e explicações para quem está começando com o Docker. Além disso, você também pode acompanhar nossas publicações e o nosso canal no Youtube. Estamos sempre trazendo conteúdo novo para lhe manter atualizado!

Este artigo foi útil?

Obrigado pela resposta!
Rafael Marques

Rafael Marques

Especialista em Desenvolvimento Web e Marketing. É apaixonado por tecnologia, empreendedorismo, audiovisual e animais. Em sua carreira, dedica-se ao empreendedorismo, além de atuar como Desenvolvedor Fullstack e redator técnico. Gosta de usar seu tempo livre para assistir a filmes, jogar, escrever, e passar um bom tempo brincando e mimando seus animais de estimação.

Contato: rafael.blog@homehost.com.br

Ganhe 30% OFF

Indique seu nome e e-mail,e ganhe um cupom de desconto de 30% para sempre na Homehost!