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:
- Retorne ao diretório anterior onde esta o arquivo docker-compose.yml
- Crie um novo arquivo com o nome Dockerfile com a letra D em maiúsculo e sem extensão
- 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.