Descubra como instalar o WordPress em con­ten­to­res Docker, tanto ma­nu­al­mente como com o Docker Compose. Para os pro­gra­ma­do­res de WordPress, esta opção é es­pe­ci­al­mente útil. O Docker permite-lhe testar várias con­fi­gu­ra­ções do WordPress e colocar em fun­ci­o­na­mento uma nova ins­ta­la­ção com apenas alguns comandos.

Re­qui­si­tos

Para que o WordPress funcione cor­re­ta­mente em con­ten­to­res Docker, é ne­ces­sá­ria uma dis­tri­bui­ção Linux atu­a­li­zada e com suporte. Versões an­te­ri­o­res, como o CentOS 7 ou o Ubuntu 14.04, estão obsoletas e devem ser subs­ti­tuí­das por al­ter­na­ti­vas mais recentes. Recomenda-se:

  • Ubuntu 22.04 LTS ou uma versão mais recente
  • Debian 12 ou uma versão mais recente
  • Uma versão atual do Red Hat En­ter­prise Linux (RHEL) ou AlmaLinux

Além disso, o Docker deve estar instalado e pronto a ser utilizado. A versão mínima re­co­men­dada é o Docker 20.10 ou superior, para que possa be­ne­fi­ciar das mais recentes melhorias em termos de segurança e de­sem­pe­nho. Se pretender utilizar o Docker Compose, cer­ti­fi­que-se de que possui, pelo menos, a versão 2.x, uma vez que as versões an­te­ri­o­res já não recebem atu­a­li­za­ções.

É útil ter co­nhe­ci­men­tos básicos sobre a uti­li­za­ção da linha de comandos, bem como sobre como utilizar o Docker Compose e o Docker. Para con­fi­gu­ra­ções mais abran­gen­tes ou es­ca­lá­veis, também deve fa­mi­li­a­ri­zar-se com o Ku­ber­ne­tes para or­ques­trar con­ten­to­res a nível pro­fis­si­o­nal.

Executar o WordPress em con­ten­to­res Docker

Uma ins­ta­la­ção do WordPress requer três com­po­nen­tes:

  • O software WordPress
  • Uma base de dados MySQL ou MariaDB
  • Os passos finais da ins­ta­la­ção através do navegador

Nos exemplos a seguir, o WordPress e o MySQL/MariaDB são exe­cu­ta­dos em con­ten­to­res separados, mas in­ter­li­ga­dos. O contentor com o WordPress é mapeado para uma porta do host, para que possas aceder-lhe a partir do teu navegador.

Executar um contentor MySQL/MariaDB

Depois de iniciar o Docker, o primeiro passo é con­fi­gu­rar a base de dados. Para tal, começa por executar um contentor chamado my-db. Podes utilizar tanto o MySQL como o MariaDB, uma vez que o MariaDB é com­pa­tí­vel com o MySQL.

MySQL

Inicie o contêiner com o comando:

sudo docker run --name my-db -e MYSQL_ROOT_PASSWORD=CONTRASEÑA_SEGURA -d mysql:latest

MariaDB

Inicie o contêiner com o comando:

sudo docker run --name my-db -e MYSQL_ROOT_PASSWORD=CONTRASEÑA_SEGURA -d mariadb:latest

Criar a base de dados

Depois de criar o seu contentor, deve criar uma base de dados que irá utilizar para a sua ins­ta­la­ção do WordPress.

MySQL

Ligue-se ao seu contentor de base de dados recém-criado com o seguinte comando:

docker exec -it my-db mysql -u root -p

Crie uma base de dados:

CREATE DATABASE wordpress-db;

MariaDB

Ligue-se ao seu contentor de base de dados recém-criado com o seguinte comando:

docker exec -it my-db mariadb -u root -p

Crie uma base de dados:

CREATE DATABASE wordpress-db;

Executar um contentor do WordPress

Agora, execute um contentor com a imagem oficial do WordPress, atribuído à porta 8080 e ligado à base de dados.

Duas es­cla­re­ci­men­tos:

  • Se estiver a utilizar uma firewall, poderá ser ne­ces­sá­rio permitir o acesso à porta 8080.
  • Se já tiver outro serviço a ser executado na porta 8080, pode escolher outra porta no host.

O comando varia li­gei­ra­mente, de­pen­dendo se está a utilizar o MySQL ou o MariaDB:

MySQL

Inicie um contêiner do WordPress com o seguinte comando:

sudo docker run --name my-wordpress -p 8080:80 --link my-db:mysql -d wordpress:latest

MariaDB

Inicie um contêiner do WordPress com o seguinte comando:

sudo docker run --name my-wordpress -p 8080:80 --link my-db:mariadb -d wordpress:latest

Existem muitas outras variáveis de ambiente que pode adicionar a este comando se pretender subs­ti­tuir os valores pre­de­fi­ni­dos, incluindo:

  • -e WORDPRESS_DB_HOST=[hostname]: por pre­de­fi­ni­ção, são uti­li­za­dos o endereço IP e a porta do contentor MySQL/MariaDB associado. Esta variável permite ligar-se a uma base de dados MySQL/MariaDB alojada noutro servidor.
  • -e WORDPRESS_DB_USER=[username]: o valor por defeito é root.
  • -e WORDPRESS_DB_PASSWORD=[password]: por pre­de­fi­ni­ção, é utilizada a variável de ambiente MYSQL_ROOT_PASSWORD do contentor MySQL/MariaDB associado.
  • -e WORDPRESS_DB_NAME=[name]: o valor pre­de­fi­nido é “wordpress”.

Para maior segurança, pode ser útil não executar os con­ten­to­res na rede de ponte padrão. Em vez disso, pode utilizar-se uma rede própria:

docker network create my-wp-network
docker run --name my-db --network my-wp-network -e MYSQL_ROOT_PASSWORD=CONTRASEÑA_SEGURA -d mysql:latest
docker run --name my-wordpress --network my-wp-network -p 8080:80 -d wordpress:latest
bash

Aqui, os seus con­ten­to­res estão mais isolados dos outros con­ten­to­res, o que reduz o risco de ligações in­de­se­ja­das. Além disso, as regras de rede podem ser con­fi­gu­ra­das com maior detalhe, por exemplo, através de regras especiais de firewall ou da uti­li­za­ção de um proxy inverso.

Concluir a ins­ta­la­ção a partir do navegador

Para concluir os últimos passos da ins­ta­la­ção, deve aceder ao contêiner do WordPress através de um navegador.

No exemplo anterior, atri­buí­mos a porta 8080 do host à porta 80 (Web­ser­vi­ces) do contentor. Desta forma, pode aceder ao contentor a partir de um navegador uti­li­zando o endereço IP ou a URL do servidor:

  • http://
  • http://example.com

Aceda a essa URL no navegador, selecione o idioma de ins­ta­la­ção e clique em «Continue» (Continuar).

Imagem: Captura de pantalla de la selección de idioma en Wordpress
Ahora puedes se­lec­ci­o­nar el idioma de ins­ta­la­ción desde tu navegador.

Na página seguinte, receberás ins­tru­ções que te pre­pa­ra­rão para a ins­ta­la­ção adicional. Clica no botão «Let’s go!» para continuar.

Imagem: Captura de pantalla del aviso de instalación en Wordpress
El aviso de ins­ta­la­ción de WordPress te informa sobre el siguiente paso del proceso de con­fi­gu­ra­ción.

Introduza os dados da sua base de dados para gerar o ficheiro wp-config.php.

Imagem: Captura de pantalla de la conexión a la base de datos de Wordpress
Introduce la in­for­ma­ción so­li­ci­tada sobre tu base de datos.

Tenha em atenção que o uti­li­za­dor pre­de­fi­nido, salvo indicação em contrário, é «root». Introduza aqui o nome da base de dados que criou e a palavra-passe que escolheu. Ao clicar em «Submit» (Enviar), con­ti­nu­ará com o processo de ins­ta­la­ção.

Imagem: Captura de pantalla de la instalación de WordPress: información sobre la página web de WordPress
Introduce los datos re­que­ri­dos para tu página web de WordPress.
  • Título do site: introduza o título do seu site.
  • Nome de uti­li­za­dor: este será o nome de uti­li­za­dor principal com pri­vi­lé­gios ad­mi­nis­tra­ti­vos. Dica: por motivos de segurança, evite usar «Admin» ou o nome/URL da sua página como nome de uti­li­za­dor.
  • Palavra-passe: anote esta palavra-passe antes de continuar.
  • O seu e-mail: endereço de e-mail associado ao uti­li­za­dor ad­mi­nis­tra­dor principal.

Clique no botão «Install WordPress» (Instalar o WordPress) para concluir a ins­ta­la­ção.

Imagem: Captura de pantalla de la instalación completada
El mensaje de éxito indica que la ins­ta­la­ción se ha com­ple­tado cor­rec­ta­mente.

Se a ins­ta­la­ção tiver sido concluída com sucesso, receberás uma mensagem de con­fir­ma­ção e já poderás iniciar sessão no WordPress.

Executar o WordPress com o Docker Compose

A uti­li­za­ção do Docker Compose para executar o WordPress também é uma opção. Podes encontrar in­for­ma­ções sobre a ins­ta­la­ção e a uti­li­za­ção do Docker Compose no nosso artigo«Docker Compose e Docker Swarm: or­ques­tra­ção de con­ten­to­res Docker»para mais in­for­ma­ções. Ba­si­ca­mente, esta fer­ra­menta permite-te definir todos os serviços ne­ces­sá­rios num único ficheiro e iniciá-los em conjunto.

Criar o ficheiro YAML

Primeiro, crie uma pasta para o seu projeto e aceda a ela:

sudo mkdir wordpress 
cd wordpress

Crie um ficheiro YAML chamado docker-compose.yml com o seguinte comando:

sudo nano docker-compose.yml

O conteúdo do ficheiro varia li­gei­ra­mente, de­pen­dendo se utiliza o MySQL ou o MariaDB.

MySQL

Adicione o seguinte ao ficheiro:

wordpress: 
    image: wordpress:latest 
    links: 
        - wordpress_db:mysql 
    ports: 
        - 8080:80 
wordpress_db: 
    image: mysql 
    environment: 
        MYSQL_ROOT_PASSWORD: CONTRASEÑA_SEGURA

Guarde e feche o ficheiro.

MariaDB

Adicione o seguinte ao ficheiro:

wordpress: 
    image: wordpress:latest 
    links: 
        - wordpress_db:mariadb 
    ports: 
        - 8080:80 
wordpress_db: 
    image: mariadb 
    environment: 
        MYSQL_ROOT_PASSWORD: CONTRASEÑA_SEGURA

Guarde e feche o ficheiro.

Iniciar os con­ten­to­res

Em seguida, utilize o Docker Compose para iniciar estes con­ten­to­res com o seguinte comando:

sudo docker-compose up -d

Com este comando, pode verificar se os con­ten­to­res foram criados:

sudo docker-compose ps

Para concluir a ins­ta­la­ção, aceda ao contêiner do WordPress num navegador. Utilize o endereço IP ou a URL do servidor:

  • http://192.168.0.1
  • http://example.com

Ku­ber­ne­tes para im­ple­men­ta­ções es­ca­lá­veis do WordPress

Para con­fi­gu­ra­ções de maior dimensão e ambientes de produção, pode utilizar o Ku­ber­ne­tes (K8s). Com o Ku­ber­ne­tes, os con­ten­to­res do WordPress podem ser or­ques­tra­dos e geridos au­to­ma­ti­ca­mente através de vários nós. A uti­li­za­ção de um cluster do Ku­ber­ne­tes oferece vantagens como es­ca­la­bi­li­dade au­to­má­tica, me­ca­nis­mos de au­tor­re­cu­pe­ra­ção (self-healing) e gestão cen­tra­li­zada de recursos. Uma forma de im­ple­men­ta­ção é através do Helm, um gestor de pacotes para o Ku­ber­ne­tes:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-wordpress bitnami/wordpress --set service.type=LoadBalancer
bash

Isto garante uma im­ple­men­ta­ção do WordPress à prova de falhas e escalável, com ba­lan­ce­a­mento de carga, atu­a­li­za­ções au­to­má­ti­cas e suporte à comutação por falha.

Ir para o menu principal