Desenvolvendo para WordPress com Docker, Git e WP-CLI

313 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
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
313
No SlideShare
0
A partir de incorporações
0
Número de incorporações
15
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Com apenas quatro comandos, o WP-CLI:
    baixa e descompacta o core do WordPress,
    cria e popula o arquivo wp-config.php,
    cria o banco de dados no MySQL e preenche os dados de instalação.
    Não é preciso nem abrir o navegador: o WordPress já está instalado, com o seu famoso post de “Hello World”.
  • Nos comandos ao lado, o WP-CLI lista os plugins, baixa o plugin “Advanced Custom Fields” do repositório oficial, instala este plugin, depois ativa e finalmente mostra o novo plugin na lista de plugins instalados.
  • Nos comandos ao lado, o WP-CLI atualiza o core do WordPress e depois verifica entre os plugins instalados quais estão desatualizados e faz a sua atualização. Os downloads são feitos do repositório oficial.
  • 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 ?

    ×