desenvolvendo para wordpress com docker, git e wp-cli
TRANSCRIPT
![Page 1: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/1.jpg)
Desenvolvendo para WordPress
com Docker, Git e WP-CLI
Como construir um ambiente de desenvolvimento inteligente para um workflow mais prático e ágil
![Page 2: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/2.jpg)
Rudá AlmeidaIntegrante da equipe de Tecnologia da Informação da UFRJ
Entusiasta do WordPress e integrante da comunidade carioca
Já palestrei e ajudei a organizar Meetups e WordCamps no Rio de Janeiro
![Page 3: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/3.jpg)
WP-CLIUm verdadeiro canivete
suíço para o WordPress
![Page 4: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/4.jpg)
O que éGerencia o WordPress via linha de comando
Simplifica tarefas tediosas e repetitivas
Dispensa o uso do navegador
Automação e programabilidade
![Page 5: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/5.jpg)
Vamos ver alguns exemplos?
![Page 6: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/6.jpg)
Instalando o WordPress “do zero”$ wp core download
$ wp core config --dbname=wordpress --dbuser=root --dbpass=wordpress
$ wp db create
$ wp core install --url=localhost --title=WordCamp --admin_user=admin --admin_password=admin [email protected] --skip-email
![Page 7: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/7.jpg)
Gerenciando usuários$ wp user list
$ wp user update <usuario> --user_pass=<senha>
$ wp user create <username> <email> --role=administrator --user_pass=<senha>
$ wp user delete <user>
![Page 8: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/8.jpg)
$ wp plugin list
$ wp plugin install advanced-custom-fields --activate
Instalando plugins
![Page 9: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/9.jpg)
Atualizando o core e os plugins$ wp core update
$ wp plugin update --all
$ wp theme update --all
![Page 10: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/10.jpg)
Para saber mais sobre WP-CLI
“Dominando o WP-CLI”, Gustavo Bordoni - WordPress Meetup RJ de junho de 2016
“WP-CLI: o WordPress na linha de comando”, Rodrigo Primo” - InterConWP 2014
“Gerenciando o WordPress com o WP-CLI”, Rodrigo Primo” - WordCamp BH 2014
![Page 11: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/11.jpg)
Gitgit commit -m "#WCRJ16"
git push
![Page 12: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/12.jpg)
O que éSistema de controle de versionamento
Guarda histórico das alterações nos arquivos
Permite “voltar no tempo” a pontos específicos
Permite colaboração entre um time
Descentralizado
![Page 13: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/13.jpg)
Git é uma skill essencial para todo desenvolvedor WordPress
![Page 14: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/14.jpg)
Git é uma skill essencial para todo desenvolvedor PHP
![Page 15: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/15.jpg)
Git é uma skill essencial para todo desenvolvedor back-end
![Page 16: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/16.jpg)
Git é uma skill essencial para todo desenvolvedor front-end
![Page 17: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/17.jpg)
Git é uma skill essencial para todo desenvolvedor
![Page 18: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/18.jpg)
Exemplo (extremamente!) básico de Git$ git init$ git add .$ git commit -m "initial commit"
(...algumas alterações aqui…)
$ git add .$ git commit -m "descrição do que mudou"$ git log
![Page 20: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/20.jpg)
Git Cheat Sheet
![Page 21: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/21.jpg)
Git não é backup!
![Page 22: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/22.jpg)
Git não é backup!
![Page 23: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/23.jpg)
Git não é backup!
![Page 24: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/24.jpg)
Para saber mais sobre Git
Uma das 76 mil questões com a tag “Git” no Stack Overflow
O livro “Pro Git”, de Scott Chacon e Ben Straub
O curso interativo “Try Git”, parceria entre Code School e Github (gratuito)
![Page 25: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/25.jpg)
DockerÉ igual uma máquina virtual,
só que é completamente diferente.
![Page 26: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/26.jpg)
O que éPlataforma de virtualização baseada
em contêineres
Extremamente rápido e leve em tamanho e uso de recursos
Modular e extensível
Replicabilidade e comportamento previsível
Versatilidade: a configuração do ambiente de desenvolvimento não fica mais presa à configuração da máquina local
Garantia de que desenvolvimento e produção possuem ambientes idênticos
Atualizações de pacotes na máquina local não causam interferência no ambiente de desenvolvimento.
Simplifica subir ambientes complexos em poucos comandos.
![Page 27: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/27.jpg)
Estrutura básica da plataforma Docker
![Page 28: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/28.jpg)
Build? Pull? Run?Imagem? Contêiner? Dockerfile?
![Page 29: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/29.jpg)
Keep calm e lembre do boloImagem => Bolo
Dockerfile => Receita do bolo
Contêiner => Fatia do bolo
Registry / Docker Hub => Padaria
Docker build => Fazer um bolo
Docker pull => Comprar pronto
Docker run => Cortar uma fatia
Imagem: Freepik
![Page 30: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/30.jpg)
Docker Hub
![Page 31: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/31.jpg)
Instanciando um WordPress em contêineres$ docker pull mysql:5.7.14$ docker pull wordpress:4.5.1
$ docker run --name wp-db -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_DATABASE=wordpress -p 3306:3306 -d mysql:5.7.14
$ docker run --name wp --link wp-db:mysql -p 80:80 -d wordpress:4.5.1
![Page 32: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/32.jpg)
Usando um tema na sua máquina local$ docker pull mysql:5.7.14$ docker pull wordpress:4.5.1
$ docker run --name wp-db -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_DATABASE=wordpress -p 3306:3306 -d mysql:5.7.14
$ docker run --name wp --link wp-db:mysql --volume /home/user/tema:/var/www/html/wp-content/themes/meutema -p 80:80 -d wordpress:4.5.1
![Page 33: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/33.jpg)
Importando um projeto já existente$ docker pull mysql:5.7.14$ docker pull wordpress:4.5.1
$ docker run --name wp-db --volume=/home/ruda/Projetos/wordcamp/database/import:/docker-entrypoint-initdb.d -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_DATABASE=wordpress -p 3306:3306 -d mysql:5.7.14
$ docker run --name wp --link wp-db:mysql --volume=/home/ruda/Projetos/wordcamp/wp-content:/var/www/html/wp-content -p 80:80 -d wordpress:4.5.1
![Page 34: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/34.jpg)
...mas e o WP-CLI?
![Page 35: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/35.jpg)
A peça que faltava$ git clone [email protected]:DockerDemos/appstack-wpcli.git
$ docker build -t wpcli appstack-wpcli
$ docker run --rm --link wp-db:mysql --volumes-from wp -w /var/www/html -it wpcli wp --allow-root <comando do wp-cli>
![Page 36: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/36.jpg)
Vamos simplificar mais um pouco!
![Page 37: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/37.jpg)
Um atalho para o WP-CLI dockerizado#!/bin/bash
docker run --rm --link "${1}"-db:mysql --volumes-from "${1}" -w="/var/www/html" -it wpcli wp --path=/var/www/html --allow-root "${@:2}"
![Page 38: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/38.jpg)
DICAS
![Page 39: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/39.jpg)
A imagem oficial do WordPress vem com opcache ativado. Alterações em arquivos PHP demoram até 60 segundos para ser reconhecidas. Para desativar o opcache, edite o arquivo /usr/local/etc/php/conf.d/opcache-recommended.ini
![Page 40: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/40.jpg)
Contêineres perdem seus dados ao serem encerrados. Para garantir a permanência dos dados, use contêineres de volume, ou volumes da máquina hospedeira com --volume
Ao usar volumes, preste atenção às permissões das pastas e arquivos do host. Se o host usar SELinux, use ":z" no final dos caminhos.
![Page 41: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/41.jpg)
Para rodar um contêiner em background, use -dPara visualizar os logs de um contêiner em background, use: docker logs -f <container>
![Page 42: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/42.jpg)
Para ter acesso ao terminal dentro de um contêiner:docker exec -it <container> bash
![Page 43: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/43.jpg)
Deixe a porta do contêiner MySQL visível para o host, dessa forma o MySQL WorkBench ou o adminer podem manipular os dados diretamente
![Page 44: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/44.jpg)
Contêineres não são apagados ao ter sua execução interrompida (a menos que executados com a opção --rm), e devem ser apagados manualmente.
![Page 45: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/45.jpg)
Se já existir um contêiner com o mesmo nome, o Docker se recusa a criar um novo contêiner.
Se um contêiner estiver em execução, deve ser parado manualmente para poder ser excluído.
Se ocorrer um erro na criação do conteiner, ele deve ser excluido manualmente assim mesmo
![Page 46: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/46.jpg)
Docker Compose
...ou: decorar comandos pra quê?
![Page 47: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/47.jpg)
O que éControla e gerencia instâncias de contêineres com base em arquivos
de configuração.
Cuida das tarefas de iniciar, reiniciar, manter executando, parar a execução, remover, e criar novamente cada contêiner
Detecta alterações nos arquivos de configuração e recria apenas o que for necessário
docker-compose up -dDocker-compose down
![Page 48: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/48.jpg)
docker-compose.ymlversion: '2'services: database:
image: mysql:5.7.14ports:
- "3306:3306"volumes:
- "./database/import:/docker-entrypoint-initdb.d:Z"
restart: alwaysenvironment:
MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress:
depends_on: - database
image: wordpress:4.5.1links:
- database:mysqlports:
- "80:80"
volumes: - "./tema:/var/www/html/wp-content/themes/meutema:z" - "./arquivos:/var/www/html/wp-content:z"
restart: alwaysenvironment:
WORDPRESS_DB_HOST: database:3306 WORDPRESS_DB_PASSWORD: wordpress
![Page 49: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/49.jpg)
Melhorando o atalho do WP-CLI#!/bin/bash
docker run --rm --net="${1}"_default --link "${1}"_database_1:mysql --volumes-from "${1}"_wordpress_1 -w="/var/www/html" -it wpcli wp --path=/var/www/html --allow-root "${@:2}"
![Page 50: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/50.jpg)
Para saber mais sobre Docker
![Page 51: Desenvolvendo para WordPress com Docker, Git e WP-CLI](https://reader036.vdocuments.net/reader036/viewer/2022081507/5874f5ff1a28ab917a8b7e83/html5/thumbnails/51.jpg)
PERGUNTAS ?