|
| 1 | +# Ambiente de Desenvolvimento Local do Adb Payment com Magento 2 |
| 2 | + |
| 3 | +Este guia descreve como configurar e rodar rapidamente o ambiente de desenvolvimento local do Magento 2 usando Docker e Makefile. |
| 4 | + |
| 5 | +O objetivo desse ambiente é possibilitar uma maior facilidade no desenvolvimento do plugin Adb Payment do Mercado Pago. Isso funciona mapeando o código do repositório para dentro do ambiente Magento que roda dentro do Docker. |
| 6 | + |
| 7 | +## Pré-requisitos |
| 8 | + |
| 9 | +Certifique-se de que as seguintes dependências estejam instaladas em seu sistema: |
| 10 | + |
| 11 | +- **Docker** (com suporte a Docker Compose) |
| 12 | +- **OpenSSL** (para geração de certificados SSL) |
| 13 | + |
| 14 | +## Passos para Rodar |
| 15 | + |
| 16 | +### 1. Configuração do Ambiente |
| 17 | + |
| 18 | +#### a. Arquivo Hosts |
| 19 | + |
| 20 | +Adicione a seguinte linha ao seu arquivo `hosts`: |
| 21 | + |
| 22 | +``` |
| 23 | +127.0.0.1 magento.local |
| 24 | +``` |
| 25 | + |
| 26 | +#### b. Variáveis de Ambiente |
| 27 | + |
| 28 | +Copie o arquivo `.env.sample` para `.env`: |
| 29 | + |
| 30 | +```bash |
| 31 | +cp build/.env.sample build/.env |
| 32 | +``` |
| 33 | + |
| 34 | +O arquivo de ambiente contém todas as variáveis que podem ser personalizadas para a instalação e execução do Magento. Abaixo está a explicação de cada variável e como ela se relaciona com o ambiente: |
| 35 | + |
| 36 | +##### Variáveis de Configuração |
| 37 | + |
| 38 | +- **PHP_VERSION**: Define a versão do PHP que será utilizada no ambiente. As versões disponíveis são 7.2; 7.4; 8.1 e 8.2 |
| 39 | +- **MAGENTO_VERSION**: Define a versão do Magento 2 a ser instalada. A versão escolhida pode ser qualquer uma que seja suportada por uma das versões do PHP listadas acima, lembrando que podem haver divergências por conta de versões das aplicações, seja do Magento com o PHP seja também do Magento com o banco de dados ou elasticsearch. Um exemplo é que versões do Elastic acima da 8.X não funcionam muito bem com o Magento 2. Outro exemplo é que a versão 2.4.5-p4 do Magento não aceita o MariaDB em versões acima da 10.4. |
| 40 | +- **ELASTIC_VERSION**: Define a versão do Elasticsearch. Utilizado para melhorar a busca no Magento. |
| 41 | +- **REDIS_VERSION**: Define a versão do Redis, utilizado para cache e armazenamento temporário no Magento. |
| 42 | +- **MARIADB_VERSION**: Define a versão do MariaDB, utilizado como banco de dados no Magento. |
| 43 | +- **HOST_OS**: Define o sistema operacional do host onde o Docker está rodando. Os valores `linux` e `macos` estão disponíveis. |
| 44 | +- **DB_USER**: Define o nome de usuário para o banco de dados MySQL. |
| 45 | +- **DB_PASSWORD**: Define a senha para o banco de dados MySQL. |
| 46 | +- **DB_ROOT_PASSWORD**: Define a senha de root para o banco de dados MySQL. |
| 47 | +- **DB_PORT**: Define a porta do banco de dados MySQL que vai estar disponível para acesso da sua maquina local. |
| 48 | +- **APP_PORT**: Define a porta do servidor web (Nginx) onde o Magento será acessado. Por exemplo `magento.local:80` ou `magento.local:8000` |
| 49 | +- **ADMIN_FIRSTNAME**: Define o primeiro nome do administrador do Magento. |
| 50 | +- **ADMIN_LASTNAME**: Define o sobrenome do administrador. |
| 51 | +- **ADMIN_USER**: Define o nome de usuário do administrador. Usado para acesso no admin de Magento. |
| 52 | +- **ADMIN_PASSWORD**: Define a senha do administrador. Usado para acesso no admin de Magento. |
| 53 | +- **ADMIN_EMAIL**: Define o e-mail do administrador de Magento. |
| 54 | + |
| 55 | +### Como as Variáveis São Usadas |
| 56 | + |
| 57 | +Essas variáveis de ambiente são utilizadas para configurar e personalizar os containers Docker e a instalação do Magento. Por exemplo, a variável `DB_USER` é passada como variável de ambiente para o container do banco de dados MySQL, enquanto a `PHP_VERSION` é usada para escolher a versão correta do PHP no container correspondente. |
| 58 | + |
| 59 | +Além disso, o arquivo `docker-compose.yml` utiliza essas variáveis para configurar serviços essenciais como o banco de dados, Elasticsearch, Redis, Nginx e PHP. Veja um exemplo de como as variáveis são utilizadas para configurar o banco de dados: |
| 60 | + |
| 61 | +```yaml |
| 62 | +services: |
| 63 | + database: |
| 64 | + image: mariadb:${MARIADB_VERSION} |
| 65 | + restart: always |
| 66 | + environment: |
| 67 | + MARIADB_USER: ${DB_USER} |
| 68 | + MARIADB_PASSWORD: ${DB_PASSWORD} |
| 69 | + MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} |
| 70 | + MARIADB_DATABASE: magento |
| 71 | + volumes: |
| 72 | + - magento-database-volume:/var/lib/mysql |
| 73 | + networks: |
| 74 | + - default |
| 75 | + ports: |
| 76 | + - "${DB_PORT}:3306" |
| 77 | +``` |
| 78 | +
|
| 79 | +Neste exemplo, as variáveis `DB_USER`, `DB_PASSWORD` e `DB_ROOT_PASSWORD` são passadas para o serviço `database` para configurar o banco de dados MariaDB. |
| 80 | + |
| 81 | +#### c. Arquivo de Autenticação |
| 82 | + |
| 83 | +Crie o arquivo `auth.json` dentro da pasta `build/credentials` com as credenciais de acesso ao repositório do Magento. |
| 84 | + |
| 85 | +Você pode copiar as credenciais acessando: https://commercemarketplace.adobe.com/customer/accessKeys/ <br> |
| 86 | +(autentique-se usando o 1Password) |
| 87 | + |
| 88 | +O formato do JSON deve ser: |
| 89 | + |
| 90 | +```json |
| 91 | +{ |
| 92 | + "http-basic": { |
| 93 | + "repo.magento.com": { |
| 94 | + "username": "public key", |
| 95 | + "password": "private key" |
| 96 | + } |
| 97 | + } |
| 98 | +} |
| 99 | +``` |
| 100 | + |
| 101 | + |
| 102 | +### 2. Rodar o Ambiente |
| 103 | + |
| 104 | +Você pode usar o `Makefile` para automatizar a configuração do ambiente e a instalação do Magento. Basta rodar o seguinte comando: |
| 105 | + |
| 106 | +```bash |
| 107 | +make install |
| 108 | +``` |
| 109 | + |
| 110 | +Isso irá: |
| 111 | + |
| 112 | +- Verificar se as dependências necessárias (OpenSSL, Docker Compose, etc.) estão disponíveis. |
| 113 | +- Gerar certificados SSL caso eles não existam. |
| 114 | +- Iniciar os containers do Docker para o banco de dados, PHP, Nginx, e Elasticsearch e Redis. |
| 115 | +- Instalar o Magento e configurá-lo com os valores do seu arquivo `.env`. |
| 116 | +- Instalar o SDK PHP necessário para o plugin. |
| 117 | +- Configurar o Magento com dados de exemplo, atualizar a instalação e limpar o cache. |
| 118 | + |
| 119 | +Esse comando pode demorar dependendo da sua maquina. Após a finalização já é possível acessar o Magento localmente através do link `magento.local`. |
| 120 | +Lembrando que por padrão o ambiente roda na porta `80`, se você já tiver alguma aplicação nessa mesma porta é preciso desligar. Também é exposta a porta `3306` para o banco de dados por padrão, se ja tiver algum rodando, é preciso desligar. |
| 121 | + |
| 122 | +### 3. Rodando o Ambiente Manualmente |
| 123 | + |
| 124 | +Se você deseja rodar os containers do Docker (caso já tenha instalado o Magento) execute: |
| 125 | + |
| 126 | +```bash |
| 127 | +make run |
| 128 | +``` |
| 129 | + |
| 130 | +Isso irá iniciar os containers do Docker, mas não realizará a instalação. |
| 131 | + |
| 132 | +### 4. Parar o Ambiente |
| 133 | + |
| 134 | +Para parar os containers em execução: |
| 135 | + |
| 136 | +```bash |
| 137 | +make stop |
| 138 | +``` |
| 139 | + |
| 140 | +Isso irá desligar os containers, mas manterá os volumes intactos. |
| 141 | + |
| 142 | +### 5. Desinstalar o Ambiente |
| 143 | + |
| 144 | +Para remover completamente os containers, volumes e recursos órfãos: |
| 145 | + |
| 146 | +```bash |
| 147 | +make uninstall |
| 148 | +``` |
| 149 | + |
| 150 | +Isso irá desmontar o ambiente, incluindo todos os volumes do Docker. |
| 151 | + |
| 152 | +### 6. Remover Imagens Não Utilizadas |
| 153 | + |
| 154 | +Para remover as imagens Docker personalizadas para Nginx e PHP: |
| 155 | + |
| 156 | +```bash |
| 157 | +make remove-images |
| 158 | +``` |
| 159 | + |
| 160 | +Isso irá deletar as imagens `nginx-magento-mp` e `php-magento-mp` do seu sistema local. |
| 161 | + |
| 162 | +## Solução de Problemas |
| 163 | + |
| 164 | +- **Certificados SSL**: Se os certificados forem deletados, você pode regenerá-los rodando o comando `make install` novamente. Mas tome cuidado, pois ao deletar os certificados e recriá-los, você também precisará deletar a imagem do nginx e recriá-la. |
| 165 | +- **Problemas com Containers**: Se um container não estiver rodando, verifique com `docker ps` para garantir que os containers necessários estão ativos. |
0 commit comments