Binary file changes are not shown
l / NextGenPHP
Last active 4 months ago
Turma 5 Desafios
Binary file changes are not shown
Binary file changes are not shown
Binary file changes are not shown
Binary file changes are not shown
Binary file changes are not shown
No changes
Binary file changes are not shown
Binary file changes are not shown
| @@ -1,15 +1,10 @@ | |||
| 1 | 1 | FROM php:8.2-fpm | |
| 2 | 2 | ||
| 3 | - | # Instalar dependências do sistema | |
| 4 | 3 | RUN apt-get update && apt-get install -y \ | |
| 5 | 4 | libpq-dev \ | |
| 6 | 5 | && docker-php-ext-install pdo_pgsql opcache | |
| 7 | 6 | ||
| 8 | - | # Instalar xdebug via pecl | |
| 9 | 7 | RUN pecl install xdebug \ | |
| 10 | 8 | && docker-php-ext-enable xdebug | |
| 11 | 9 | ||
| 12 | - | # Copiar php.ini se necessário (será montado via volume no docker-compose, mas podemos copiar também) | |
| 13 | - | # COPY php.ini /usr/local/etc/php/conf.d/custom-php.ini | |
| 14 | - | ||
| 15 | 10 | WORKDIR /var/www/html | |
| @@ -1,5 +1,3 @@ | |||
| 1 | - | version: '3.8' | |
| 2 | - | ||
| 3 | 1 | services: | |
| 4 | 2 | nginx: | |
| 5 | 3 | image: nginx:latest | |
| @@ -0,0 +1,15 @@ | |||
| 1 | + | FROM php:8.2-fpm | |
| 2 | + | ||
| 3 | + | # Instalar dependências do sistema | |
| 4 | + | RUN apt-get update && apt-get install -y \ | |
| 5 | + | libpq-dev \ | |
| 6 | + | && docker-php-ext-install pdo_pgsql opcache | |
| 7 | + | ||
| 8 | + | # Instalar xdebug via pecl | |
| 9 | + | RUN pecl install xdebug \ | |
| 10 | + | && docker-php-ext-enable xdebug | |
| 11 | + | ||
| 12 | + | # Copiar php.ini se necessário (será montado via volume no docker-compose, mas podemos copiar também) | |
| 13 | + | # COPY php.ini /usr/local/etc/php/conf.d/custom-php.ini | |
| 14 | + | ||
| 15 | + | WORKDIR /var/www/html | |
| @@ -0,0 +1,39 @@ | |||
| 1 | + | version: '3.8' | |
| 2 | + | ||
| 3 | + | services: | |
| 4 | + | nginx: | |
| 5 | + | image: nginx:latest | |
| 6 | + | ports: | |
| 7 | + | - "8080:80" | |
| 8 | + | volumes: | |
| 9 | + | - ./src:/var/www/html | |
| 10 | + | - ./nginx/default.conf:/etc/nginx/conf.d/default.conf | |
| 11 | + | depends_on: | |
| 12 | + | - php | |
| 13 | + | networks: | |
| 14 | + | - app-network | |
| 15 | + | ||
| 16 | + | php: | |
| 17 | + | image: lira/php:8.2-fpm-aula02 | |
| 18 | + | volumes: | |
| 19 | + | - ./src:/var/www/html | |
| 20 | + | - ./php.ini:/usr/local/etc/php/conf.d/custom.ini | |
| 21 | + | depends_on: | |
| 22 | + | - db | |
| 23 | + | networks: | |
| 24 | + | - app-network | |
| 25 | + | ||
| 26 | + | db: | |
| 27 | + | image: postgres:15 | |
| 28 | + | environment: | |
| 29 | + | POSTGRES_DB: mydatabase | |
| 30 | + | POSTGRES_USER: user | |
| 31 | + | POSTGRES_PASSWORD: password | |
| 32 | + | ports: | |
| 33 | + | - "5432:5432" | |
| 34 | + | networks: | |
| 35 | + | - app-network | |
| 36 | + | ||
| 37 | + | networks: | |
| 38 | + | app-network: | |
| 39 | + | driver: bridge | |
Binary file changes are not shown
l revised this gist 6 months ago · 31924ff
1 file changed, 117 insertions
| @@ -0,0 +1,117 @@ | |||
| 1 | + | ==================================================== | |
| 2 | + | DETALHES - Desafio Aula01 | NextGenPHP5 | |
| 3 | + | ==================================================== | |
| 4 | + | ||
| 5 | + | ---------------------------------------------------- | |
| 6 | + | 1. Versão do PHP e Zend Engine | |
| 7 | + | ---------------------------------------------------- | |
| 8 | + | Comando para verificar: | |
| 9 | + | docker compose exec php php -v | |
| 10 | + | ||
| 11 | + | Saída esperada (PHP 8.3 Alpine): | |
| 12 | + | PHP 8.3.x (cli) (built: ...) | |
| 13 | + | Copyright (c) The PHP Group | |
| 14 | + | Zend Engine v4.3.x, Copyright (c) Zend Technologies | |
| 15 | + | ||
| 16 | + | ---------------------------------------------------- | |
| 17 | + | 2. Extensões instaladas | |
| 18 | + | ---------------------------------------------------- | |
| 19 | + | Comando para verificar: | |
| 20 | + | docker compose exec php php -m | |
| 21 | + | ||
| 22 | + | Extensões padrão da imagem php:8.3-alpine: | |
| 23 | + | Core, ctype, curl, date, dom, fileinfo, filter, | |
| 24 | + | ftp, hash, iconv, json, libxml, mbstring, mysqlnd, | |
| 25 | + | openssl, pcre, PDO, pdo_sqlite, Phar, posix, | |
| 26 | + | readline, Reflection, session, SimpleXML, sodium, | |
| 27 | + | SPL, sqlite3, standard, tokenizer, xml, xmlreader, | |
| 28 | + | xmlwriter, zlib | |
| 29 | + | ||
| 30 | + | ---------------------------------------------------- | |
| 31 | + | 3. Localização do php.ini no contêiner | |
| 32 | + | ---------------------------------------------------- | |
| 33 | + | Comando para verificar: | |
| 34 | + | docker compose exec php php --ini | |
| 35 | + | ||
| 36 | + | Caminho do php.ini na imagem php:8.3-alpine: | |
| 37 | + | /usr/local/etc/php/php.ini | |
| 38 | + | ||
| 39 | + | ---------------------------------------------------- | |
| 40 | + | 4. Substituição do php.ini interno por volume | |
| 41 | + | ---------------------------------------------------- | |
| 42 | + | Configurado no docker-compose.yml com o mapeamento: | |
| 43 | + | ./php.ini:/usr/local/etc/php/php.ini | |
| 44 | + | ||
| 45 | + | O arquivo local ./php.ini substitui o php.ini | |
| 46 | + | interno do contêiner via volume do Docker. | |
| 47 | + | ||
| 48 | + | ---------------------------------------------------- | |
| 49 | + | 5. Horário padrão do PHP ajustado | |
| 50 | + | ---------------------------------------------------- | |
| 51 | + | Configuração aplicada em ./php.ini: | |
| 52 | + | date.timezone = America/Sao_Paulo | |
| 53 | + | ||
| 54 | + | Verificar no contêiner: | |
| 55 | + | docker compose exec php php -r "echo date('d/m/Y H:i:s');" | |
| 56 | + | ||
| 57 | + | ---------------------------------------------------- | |
| 58 | + | 6. Limite de memória aumentado para 512MB | |
| 59 | + | ---------------------------------------------------- | |
| 60 | + | Configuração aplicada em ./php.ini: | |
| 61 | + | memory_limit = 512M | |
| 62 | + | ||
| 63 | + | Verificar no contêiner: | |
| 64 | + | docker compose exec php php -r "echo ini_get('memory_limit');" | |
| 65 | + | ||
| 66 | + | Saída esperada: 512M | |
| 67 | + | ||
| 68 | + | ---------------------------------------------------- | |
| 69 | + | 8. Correção do erro de exibição do projeto | |
| 70 | + | ---------------------------------------------------- | |
| 71 | + | Bug encontrado em ./index.php na função formatServices(): | |
| 72 | + | ||
| 73 | + | ANTES (incorreto): | |
| 74 | + | return $services; // retornava o array, não a string HTML | |
| 75 | + | ||
| 76 | + | DEPOIS (correto): | |
| 77 | + | return $servicesHtml; // retorna a string HTML montada | |
| 78 | + | ||
| 79 | + | Acessar o projeto em: http://localhost:8011 | |
| 80 | + | ||
| 81 | + | ---------------------------------------------------- | |
| 82 | + | DESAFIO EXTRA 1: Versão da extensão pdo_sqlite | |
| 83 | + | ---------------------------------------------------- | |
| 84 | + | Comando para verificar: | |
| 85 | + | docker compose exec php php -r " | |
| 86 | + | \$pdo = new PDO('sqlite::memory:'); | |
| 87 | + | \$stmt = \$pdo->query('SELECT sqlite_version()'); | |
| 88 | + | echo 'SQLite version: ' . \$stmt->fetchColumn() . PHP_EOL; | |
| 89 | + | echo 'pdo_sqlite version acompanha SQLite: ' . phpversion('pdo_sqlite') . PHP_EOL; | |
| 90 | + | " | |
| 91 | + | ||
| 92 | + | Alternativa via phpinfo: | |
| 93 | + | docker compose exec php php -r "phpinfo();" | grep -i sqlite | |
| 94 | + | ||
| 95 | + | ---------------------------------------------------- | |
| 96 | + | DESAFIO EXTRA 2: Compilar o PHP | |
| 97 | + | ---------------------------------------------------- | |
| 98 | + | Passos disponíveis em: ../README.md | |
| 99 | + | ||
| 100 | + | Resumo: | |
| 101 | + | 1. git clone --depth=1 [email protected]:php/php-src.git | |
| 102 | + | 2. cd php-src && git checkout php-8.4.3 | |
| 103 | + | 3. docker compose up -d && docker compose exec ubuntu bash | |
| 104 | + | 4. apt update && apt install -y pkg-config build-essential \ | |
| 105 | + | autoconf bison re2c libxml2-dev libsqlite3-dev | |
| 106 | + | 5. ./buildconf | |
| 107 | + | 6. ./configure --enable-debug | |
| 108 | + | 7. make -j$(nproc) | |
| 109 | + | 8. make test | |
| 110 | + | 9. make install | |
| 111 | + | ||
| 112 | + | ==================================================== | |
| 113 | + | Para rodar o projeto | |
| 114 | + | ==================================================== | |
| 115 | + | docker compose up -d | |
| 116 | + | Acesse: http://localhost:8011 | |
| 117 | + | ==================================================== | |