Criando um container docker com WordPress e um tema customizado

O objetivo deste tutorial é demonstrar o passo a passo de como criar um container docker que rode o gerenciador de blogs WordPress e que contenha um tema customizado.

Como primeiro passo, considerando que você já tem uma máquina com o Docker instalado, vamos criar um ambiente WordPress simples, mas seguindo o padrão mínimo sugerido pelas boas práticas da utilização de containers. Esse script original está neste site: https://docs.docker.com/compose/wordpress/#define-the-project

  • Crie um arquivo chamado docker-compose.yml

Coloque seguinte conteúdo dentro deste arquivo:

version: '3.3'

services:
db:
image: mysql:5.7
volumes:
- dbdata:/var/lib/mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- dacs2018
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
networks:
- dacs2018
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
dbdata:
networks:
dacs2018:
external:
name: dacs2018

O próximo passo é executar o comando docker-compose para gerar o ambiente considerando este arquivo YML de configuração:

docker-compose up -d

Para verficar se o ambiente container esta em execução corretamente, podemos utilizar o comando docker ps para listar o que esta em execução.

docker ps

Observe que o resultado deve ser similar a imagem abaixo:

Agora para entender como funciona a estrutura de arquivos do WordPress vamos, acessar o container em execução através do comando docker exec.

docker exec -it wpwalter_wordpress_1 bash

Conforme a imagem abaixo, podemos observar que dentro da pasta /var/www/html/wp-content/themes é que ficam os arquivos que definem o funcionamento de um tema do WordPress. Basicamente todo tema precisa ter apenas dois arquivos um index.php, que representa a página principal do blog, e um style.css que é a folha de estilos padrão.

Para sair do bash que esta sendo executado dentro do container, basta digitar exit <enter>

Agora que já compreendemos como é a estrutura de um tema customizado do WordPress, vamos criar uma imagem docker customizada contendo nosso novo tema. Para isso os seguintes passos devem ser executados:

  • Dentro do diretório onde você criou o arquivo docker-compose.yml, crie uma subpasta com o nome do tema que você deseja criar. Neste exemplo, vou criar uma pasta com o nome walter.
  • Dentro desta pasta crie pelo menos dois arquivos:
    • um arquivo com o nome style.css, que não precisa ter nenhum conteúdo
    • um arquivo com o nome index.php, coloque apenas um tag HTML para que você saiba que o tema foi carregado com sucesso, neste caso vou colocar apenas

<h1>Eu não acredito…</h1>

Agora precisamos criar nossa imagem customizada docker, se baseando na imagem wordpress padrão, mas copiando nosso tema para dentro dela. Para fazer isso, siga os seguintes passos:

  1. Retorne ao diretório anterior onde esta o arquivo docker-compose.yml
  2. Crie um novo arquivo com o nome Dockerfile com a letra D em maiúsculo e sem extensão
  3. O conteúdo deste arquivo deve ser o seguinte

FROM wordpress:latest
COPY /walter /var/www/html/wp-content/themes/walter

Observe que estamos indicando para o docker que ele deve se basear na imagem wordpress:latest para criar nossa imagem customizada, e em seguida executamos o comando copy para copiar para dentro da imagem do container o novo tema que esta na pasta /walter. Ao concluir salve o conteúdo deste arquivo.

O próximo passo é executar o comando docker image para criar nossa nova imagem docker com base no arquivo Dockerfile, para isso execute o comando a seguir:

docker build -t waltercoan:wordpress .

Observe que demos o TAG (-t) para nossa imagem de waltercoan:wordpress, o ponto em seguida significa que o docker deve considerar o conteúdo desta pasta para fazer a construção da imagem. O resultado esperado deste comando está na imagem abaixo:

Agora que a imagem foi criada com sucesso em nosso ambiente docker, precisamos colocá-la em execução no lugar da imagem utilizada no início deste tutorial. Para isso vamos primeiro parar a execução do container já existente com o comando:

docker stop wpwalter_wordpress_1

Em seguida vamos excluir esse container utilizando o comando:

docker rm wpwalter_wordpress_1

Como próximo passo, precisamos modificar nosso arquivo docker-compose.yml, para que ele passe a utilizar a nova imagem customizada que criamos. Importante destacar que o primeiro arquivo docker-compose.yml criou dois containers, um para o wordpress e o segundo para o mysql que é o banco necessário para executar a aplicação. Agora vamos modificar nosso arquivo docker-compose.yml para apenas criar o container wordpress, e conectar diretamente no IP interno do container do mysql. Para descobrir o IP do seu container mysql utilize o comando: docker inspect wpwalter_db_1

Modifique o conteúdo do arquivo docker-compose.yml conforme exemplo abaixo:

version: ‘2.0’

services:
wordpress:
image: waltercoan:wordpress
ports:
– “8000:80”
networks:
– dacs2018
restart: always
environment:
WORDPRESS_DB_HOST: 172.23.0.2:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
networks:
dacs2018:
external:
name: dacs2018

Observe que agora estamos utilizando nossa imagem customizada, retiramos toda a configuração do serviço do container mysql, e estamos conectando diretamente na porta do mysql.

Em seguida execute o comando abaixo para recriar o container:

docker-compose up -d

Após a conclusão da execução deste comando, acesse a página de administração do seu blog, e vá no menu appearance -> themes você vai observar que o novo tema será apresentado. Ao habilitar esse tema e acessar a página principal do seu blog, verá que o HTML inserido no index.php será carregado.

 

 

 

 

Tags : |

Add your comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.