O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Desenvolvendo para WordPress com Docker, Git e WP-CLI

467 visualizações

Publicada em

Como construir um ambiente de desenvolvimento inteligente para um workflow mais prático e ágil

Palestra apresentada no WordCamp Rio de Janeiro 2016

Publicada em: Internet
  • Seja o primeiro a comentar

Desenvolvendo para WordPress com Docker, Git e WP-CLI

  1. 1. Desenvolvendo para WordPress com Docker, Git e WP-CLI Como construir um ambiente de desenvolvimento inteligente para um workflow mais prático e ágil
  2. 2. Rudá Almeida Integrante 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
  3. 3. WP-CLI Um verdadeiro canivete suíço para o WordPress
  4. 4. O que é Gerencia o WordPress via linha de comando Simplifica tarefas tediosas e repetitivas Dispensa o uso do navegador Automação e programabilidade
  5. 5. Vamos ver alguns exemplos?
  6. 6. 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 -- admin_email=admin@example.com --skip-email
  7. 7. 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>
  8. 8. $ wp plugin list $ wp plugin install advanced-custom-fields --activate Instalando plugins
  9. 9. Atualizando o core e os plugins $ wp core update $ wp plugin update --all $ wp theme update --all
  10. 10. 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
  11. 11. Git git commit -m "#WCRJ16" git push
  12. 12. 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
  13. 13. Git é uma skill essencial para todo desenvolvedor WordPress
  14. 14. Git é uma skill essencial para todo desenvolvedor PHP
  15. 15. Git é uma skill essencial para todo desenvolvedor back-end
  16. 16. Git é uma skill essencial para todo desenvolvedor front-end
  17. 17. Git é uma skill essencial para todo desenvolvedor
  18. 18. 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
  19. 19. Github
  20. 20. Git Cheat Sheet
  21. 21. Git não é backup!
  22. 22. Git não é backup!
  23. 23. Git não é backup!
  24. 24. 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)
  25. 25. Docker É igual uma máquina virtual, só que é completamente diferente.
  26. 26. 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.
  27. 27. Estrutura básica da plataforma Docker
  28. 28. Build? Pull? Run? Imagem? Contêiner? Dockerfile?
  29. 29. Keep calm e lembre do bolo Imagem => 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
  30. 30. Docker Hub
  31. 31. 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
  32. 32. 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
  33. 33. 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
  34. 34. ...mas e o WP-CLI?
  35. 35. A peça que faltava $ git clone git@github.com: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>
  36. 36. Vamos simplificar mais um pouco!
  37. 37. 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}"
  38. 38. DICAS
  39. 39. 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
  40. 40. 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.
  41. 41. Para rodar um contêiner em background, use -d Para visualizar os logs de um contêiner em background, use: docker logs -f <container>
  42. 42. Para ter acesso ao terminal dentro de um contêiner: docker exec -it <container> bash
  43. 43. 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
  44. 44. 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.
  45. 45. 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
  46. 46. Docker Compose ...ou: decorar comandos pra quê?
  47. 47. 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 -d Docker-compose down
  48. 48. docker-compose.yml version: '2' services: database: image: mysql:5.7.14 ports: - "3306:3306" volumes: - "./database/import:/docker-entrypoint- initdb.d:Z" restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - database image: wordpress:4.5.1 links: - database:mysql ports: - "80:80" volumes: - "./tema:/var/www/html/wp- content/themes/meutema:z" - "./arquivos:/var/www/html/wp-content:z" restart: always environment: WORDPRESS_DB_HOST: database:3306 WORDPRESS_DB_PASSWORD: wordpress
  49. 49. 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}"
  50. 50. Para saber mais sobre Docker
  51. 51. PERGUNTAS ?

×