Como rodar WordPress no WSL com Docker

Se você precisa fazer algum desenvolvimento em WordPress - por exemplo, para criar um tema ou um plugin - e trabalha com uma máquina Windows, vou te ensinar um jeito bem fácil de criar seu ambiente de desenvolvimento.

Subir um ambiente WordPress em contêiner é relativamente tranquilo. Combinando o WSL com o Docker, então, deixa tudo ainda mais fácil.

Este post parte das seguintes premissas:

  1. Você está trabalhando no Windows;
  2. Você já tem o Docker Desktop instalado;
  3. Você já tem o WSL (Windows Subsystem for Linux) instalado, e a integração entre o WSL e o Docker já está ativada; e
  4. Você tem o Visual Studio Code instalado.

Tudo pronto? Então vamos lá!

Criando seu ambiente WordPress

Para rodarmos o WordPress em contêineres usando o Docker, precisaremos do Docker Compose. Com ele, a gente consegue subir um conjunto de dois contêineres - um para o WordPress em si, outro para o MySQL do backend.

Um arquivo YAML básico para o compose do WordPress se parece com o seguinte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
version: '3.1'
services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wp-data-vol:/var/www/html
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql
    expose:
      - 3306
      - 33060

volumes:
  wp-data-vol:
  db:

Para nosso exemplo, vamos considerar que você esteja desenvolvendo um tema para o WordPress chamado Meu Super-Tema. É, eu sei, nada criativo…

A primeira coisa é criar uma pasta para armazenar a sua instância do WordPress. Para isso, abra o shell do WSL e digite:

1
2
3
4
cd ~
mkdir -p ~/wordpress/meu-super-tema
cd ~/wordpress/meu-super-tema
code .

Agora, antes de seguirmos em frente, uma palavrinha sobre os volumes do Docker.

Volumes de dados

Uma parte importante da configuração do nosso ambiente é a questão dos volumes. Isso porque, se você vai desenvolver plugins e temas para o WordPress, você vai querer que a pasta com seus arquivos PHP esteja facilmente acessível a partir do host (WSL / Windows).

Por isso, ao invés de deixarmos o Docker Compose gerenciar os volumes automaticamente para nós, iremos declarar nossos volumes de modo que eles sejam montados em diretórios locais no WSL. Daí fica muito fácil você rodar, por exemplo, o Visual Studio Code diretamente no Windows e conectado na pasta do seu tema / plugin.

A primeira coisa para isso é criar a pasta onde iremos armazenar o conteúdo do WordPress:

1
mkdir -p ~/wordpress/meu-super-tema/data/wp-data-vol

Agora, vamos alterar a declaração do nosso volume de dados do WordPress para que ele aponte para essa pasta:

1
2
3
4
5
6
7
8
9
10
11
12
13
version: '3.1'
services:
  #...
  #...
  #...
volumes:
  wp-data-vol:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/home/<nome-usuario>/wordpress/data/wp-data-vol'
  db:

Crie o arquivo wp.yml contendo nossa configuração do Docker Compose. A versão final no nosso arquivo, para você copiar e colar, é:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
version: '3.1'
services:
  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wp-data-vol:/var/www/html
  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql
    expose:
      - 3306
      - 33060

volumes:
  wp-data-vol:
    driver: local
    driver_opts:
      type: 'none'
      o: 'bind'
      device: '/home/<nome-usuario>/wordpress/data/wp-data-vol'
  db:

Não se esqueça de trocar <nome-usuario> pelo seu nome de usuário no WSL.

Rodando o WordPress

Com isso, nosso ambiente está pronto! Para rodar o WordPress, basta executar no shell do WSL:

1
docker compose -f ~/wordpress/meu-super-tema/wp.yml up

E repare como o WordPress irá preencher a pasta ~/wordpress/meu-super-tema/data/wp-data-vol com todos os seus arquivos PHP:

Pasta contendo o volume de dados do WordPress
Pasta contendo o volume de dados do WordPress (clique para ampliar)

Para editar seu tema / plugin, só criar a pasta no local correspondente dentro da pasta wp-contents.

Conclusão

Neste post, vimos como é fácil criar um ambiente de desenvolvimento para WordPress usando o WSL e o Docker. Combinando essas duas tecnologias, podemos criar um ambiente de desenvolvimento completo e isolado em poucos minutos.

Além disso, aprendemos sobre volumes de dados e como eles podem ser usados para facilitar o desenvolvimento de temas e plugins para WordPress.

Espero que este post tenha sido útil para você e que possa ajudá-lo a criar seus próprios ambientes de desenvolvimento para WordPress. Se tiver alguma dúvida ou sugestão, deixe um comentário abaixo!

Um abraço,
Igor



13/07/2023 | Por Igor Abade V. Leite | Em Técnico | Tempo de leitura: 3 mins.

Postagens relacionadas