Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dominando o Composer

Dominando o Composer

Dominando o Composer

Apresentação realizada em Agosto de 2022, em treinamento interno da IXCSoft, Chapecó - SC, Brasil.

---

Mastering Composer

Presentation held in August 2022, in internal training at IXCSoft, Chapecó - SC, Brazil.

Marcos Marcolin

August 19, 2022
Tweet

More Decks by Marcos Marcolin

Other Decks in Programming

Transcript

  1. Tópicos • O que é Composer? • Utilização • Dependências

    • Schema composer.json • Repositórios públicos e privados • Packagist • Publicação de pacotes públicos e privados
  2. O que é Composer? Inspirado no npm do Node e

    no Bundler do Ruby, o Composer foi desenvolvido por Nils Adermann e Jordi Boggiano e foi lançado no ano de 2012 sobre a licença MIT.
  3. O que é Composer? O Composer é uma ferramenta para

    gerenciamento de dependências em PHP. Ele permite que você declare as bibliotecas(códigos reutilizáveis) das quais seu projeto depende e as gerenciará (instalará/atualizará) para você.
  4. Requisitos do sistema • Última versão: PHP >= 7.2.5 •

    Versão mínima: PHP >= 5.3.2 • Windows, Linux ou macOS
  5. Uso básico • composer.json ◦ Controla as dependências ◦ Recomendado

    estar no diretório raíz do projeto ◦ Para publicar no Packagist, é obrigatório atender o item anterior.
  6. Nomes dos pacotes • Para evitar duplicação: ◦ marcosmarcolin/json ◦

    joaomaria/json • phpunit/phpunit • monorepo/monorepo
  7. Instalação das dependências • composer update ◦ Resolve as dependências

    e grava todas no arquivo composer.lock. • composer install ◦ Faz o download das dependências para a pasta vendor.
  8. Instalação das dependências • Faça commit do composer.lock ◦ Versionar

    este arquivo é importante porque fará com que qualquer pessoa que configure o projeto use exatamente as mesmas versões das dependências que você está usando.
  9. composer init • Criação do composer.json de forma interativa. ◦

    Nome ◦ Descrição ◦ Licença ◦ Autor(es) ◦ Etc. • https://getcomposer.org/doc/03-cli.md#init
  10. composer install • Lê o arquivo composer.json do diretório atual,

    resolve as dependências e as instala. ◦ --dev ◦ --no-dev ◦ --no-autoloader ◦ --no-progress ◦ etc. • https://getcomposer.org/doc/03-cli.md#install-i
  11. composer update • Resolverá as dependências do composer.lock e poderá

    fazer: ◦ Upgrade ◦ Downgrade ◦ Options: --dev, --no-dev, --dry-run, etc. • https://getcomposer.org/doc/03-cli.md#update-u
  12. composer require • Adicionar nova dependência. ◦ Options: --dev, --dry-run,

    --prefer-stable, etc. • https://getcomposer.org/doc/03-cli.md#require-r
  13. composer reinstall • Remove a dependência e instala novamente. •

    https://getcomposer.org/doc/03-cli.md#reinstall
  14. description • Uma breve descrição do pacote. Normalmente, esta é

    uma linha longa. Necessário para pacotes publicados (bibliotecas). • https://getcomposer.org/doc/04-schema.md#description
  15. version • A versão do pacote. Na maioria dos casos,

    isso não é necessário e deve ser omitido. • Exemplos: ◦ 1.0.0 ◦ 1.0.2 ◦ 1.1.0 ◦ 1.0.0-alpha3 ◦ 1.0.0-beta2 ◦ 1.0.0-RC5 • https://getcomposer.org/doc/04-schema.md#version
  16. type • The type of the package. It defaults to

    library. ◦ library ◦ project ◦ metapackage ◦ composer-plugin • https://getcomposer.org/doc/04-schema.md#type
  17. keywords • Uma matriz de palavras-chave às quais o pacote

    está relacionado. Estes podem ser usados para pesquisa e filtragem. • Exemplo: ◦ logging ◦ database ◦ templating • https://getcomposer.org/doc/04-schema.md#keywords
  18. license • A licença do pacote. Isso pode ser uma

    string ou uma matriz de strings. • Exemplo: ◦ Apache-2.0 ◦ BSD-2-Clause - BSD-3-Clause - BSD-4-Clause ◦ GPL-2.0-only / GPL-2.0-or-later - GPL-3.0-only / GPL-3.0-or-later ◦ LGPL-2.1-only / LGPL-2.1-or-later - LGPL-3.0-only / LGPL-3.0-or-later ◦ MIT • https://getcomposer.org/doc/04-schema.md#license
  19. Outros • funding • suggest • minimum-stability • prefer-stable •

    scripts • abandoned, etc. • https://getcomposer.org/doc/04-schema.md#json-schema
  20. O que são scripts? Um script, nos termos do Composer,

    pode ser um retorno de chamada PHP (definido como um método estático) ou qualquer comando executável de linha de comando. Os scripts são úteis para executar o código personalizado de um pacote ou comandos específicos do pacote durante o processo de execução do Composer.
  21. Command Eventos • pre-install-cmd: ocorre antes que o comando de

    instalação seja executado com um arquivo de bloqueio presente. • post-install-cmd: ocorre após o comando de instalação ter sido executado com um arquivo de bloqueio presente. • pre-update-cmd: ocorre antes que o comando de atualização seja executado ou antes que o comando de instalação seja executado sem um arquivo de bloqueio presente. • post-update-cmd: ocorre após a execução do comando de atualização ou após a execução do comando de instalação sem a presença de um arquivo de bloqueio. • etc. • https://getcomposer.org/doc/articles/scripts.md#event-names
  22. Outros eventos • Installer Events ◦ https://getcomposer.org/doc/articles/scripts.md#installer-events • Package Events

    ◦ https://getcomposer.org/doc/articles/scripts.md#package-events • Plugin Events ◦ https://getcomposer.org/doc/articles/scripts.md#plugin-events
  23. Alteração em pacote de terceiros • Pasta vendor é apenas

    para leitura, é desencorajado o seu versionamento. • Contribuição ao pacote: ◦ Correção de falhas; ◦ Implementação de novos testes; ◦ Nova funcionalidades; ◦ Etc. • Pull Request para GitHub ou Merge Request para GitLab. • Sua alteração pode ser aceita ou não. • Fork.
  24. Docker • O Docker é uma plataforma open source que

    facilita a criação e administração de ambientes isolados. Ele possibilita o empacotamento de uma aplicação ou ambiente dentro de um container, se tornando portátil para qualquer outro host que contenha o Docker instalado. • No final das contas: o que é o Docker e como ele funciona? | Blog TreinaWeb
  25. Docker • De forma bem resumida, podemos dizer que o

    Docker é uma plataforma aberta, criada com o objetivo de facilitar o desenvolvimento, a implantação e a execução de aplicações em ambientes isolados. Foi desenhada especialmente para disponibilizar uma aplicação da forma mais rápida possível. • O que é Docker
  26. Docker • O Docker tem como objetivo criar, testar e

    implementar aplicações em um ambiente separado da máquina original, chamado de container. Dessa forma, o desenvolvedor consegue empacotar o software de maneira padronizada. • Docker | O que é Docker, o que são Containers e como isolar ambientes?
  27. Docker-compose • Docker Compose é o orquestrador de containers da

    Docker. E como funciona um orquestrador em uma orquestra? Ele rege como uma banda deve se comportar/tocar durante uma determinada apresentação ou música. • Com o Docker Compose é a mesma coisa, mas os maestros somos nós! Nós iremos reger esse comportamento através do arquivo chamado docker-compose, semelhante ao Dockerfile, escrito em YAML. • Docker Compose: O que é? Para que serve? O que come? | iMasters
  28. Docker-compose • O Docker Compose é utilizado justamente para facilitar

    o provisionamento e gerenciamento de multi-contêineres principalmente em ambientes de desenvolvimento, testes automatizados ou cenários de execução em um único host. • Docker Compose - Explicado - Blog 4Linux
  29. Docker-compose • docker-compose up: cria e inicia os contêineres; •

    docker-compose build: realiza apenas a etapa de build das imagens que serão utilizadas; • docker-compose logs: visualizar os logs dos contêineres; • docker-compose restart: reinicia os contêineres; • docker-compose ps: lista os contêineres; • docker-compose scale: permite aumentar o número de réplicas de um contêiner; • docker-compose start: inicia os contêineres; • docker-compose stop: paralisa os contêineres; • docker-compose down: paralisa e remove todos os contêineres e seus componentes como rede, imagem e volume.
  30. O que são repositórios? Um repositório é uma fonte de

    pacote. É uma lista de pacotes/versões. O Composer irá procurar em todos os seus repositórios para encontrar os pacotes que seu projeto requer. Por padrão, apenas o repositório Packagist.org é registrado no Composer. Você pode adicionar mais repositórios ao seu projeto declarando-os em composer.json.
  31. Packagist Packagist é o repositório principal do Composer. Ele agrega

    pacotes PHP públicos instaláveis com o Composer. https://packagist.org
  32. Publicação de pacotes • Versionamento(git, svn, etc.) • Código-fonte +

    composer.json • Lançamento de tag • Publicação • Instalação
  33. Referências • https://getcomposer.org • https://packagist.org • https://www.treinaweb.com.br/blog/no-final-das-contas-o-que-e-o-docker-e-como-ele-fun ciona • https://stack.desenvolvedor.expert/appendix/docker/oquee.html

    • https://www.opservices.com.br/o-que-e-docker/ • https://4linux.com.br/diferenca-containers-maquinas-virtuais/ • https://imasters.com.br/banco-de-dados/docker-compose-o-que-e-para-que-serve-o-que- come