51
Desenvolvendo para WordPress com Docker, Git e WP-CLI Como construir um ambiente de desenvolvimento inteligente para um workflow mais prático e ágil

Desenvolvendo para WordPress com Docker, Git e WP-CLI

Embed Size (px)

Citation preview

Page 1: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

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

WP-CLIUm verdadeiro canivete

suíço para o WordPress

Page 4: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

Vamos ver alguns exemplos?

Page 6: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

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

$ wp plugin list

$ wp plugin install advanced-custom-fields --activate

Instalando plugins

Page 9: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

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

Gitgit commit -m "#WCRJ16"

git push

Page 12: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

Git é uma skill essencial para todo desenvolvedor WordPress

Page 14: Desenvolvendo para WordPress com Docker, Git e WP-CLI

Git é uma skill essencial para todo desenvolvedor PHP

Page 15: Desenvolvendo para WordPress com Docker, Git e WP-CLI

Git é uma skill essencial para todo desenvolvedor back-end

Page 16: Desenvolvendo para WordPress com Docker, Git e WP-CLI

Git é uma skill essencial para todo desenvolvedor front-end

Page 17: Desenvolvendo para WordPress com Docker, Git e WP-CLI

Git é uma skill essencial para todo desenvolvedor

Page 18: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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 19: Desenvolvendo para WordPress com Docker, Git e WP-CLI

Github

Page 20: Desenvolvendo para WordPress com Docker, Git e WP-CLI

Git Cheat Sheet

Page 21: Desenvolvendo para WordPress com Docker, Git e WP-CLI

Git não é backup!

Page 22: Desenvolvendo para WordPress com Docker, Git e WP-CLI

Git não é backup!

Page 23: Desenvolvendo para WordPress com Docker, Git e WP-CLI

Git não é backup!

Page 25: Desenvolvendo para WordPress com Docker, Git e WP-CLI

DockerÉ igual uma máquina virtual,

só que é completamente diferente.

Page 26: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

Estrutura básica da plataforma Docker

Page 28: Desenvolvendo para WordPress com Docker, Git e WP-CLI

Build? Pull? Run?Imagem? Contêiner? Dockerfile?

Page 29: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

Docker Hub

Page 31: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

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

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

...mas e o WP-CLI?

Page 35: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

Vamos simplificar mais um pouco!

Page 37: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

DICAS

Page 39: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

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

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

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

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

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

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

Docker Compose

...ou: decorar comandos pra quê?

Page 47: Desenvolvendo para WordPress com Docker, Git e WP-CLI

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

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

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 51: Desenvolvendo para WordPress com Docker, Git e WP-CLI

PERGUNTAS ?