Fernando Lira revisou este gist 5 days ago. Ir para a revisão
Sem alterações
Fernando Lira revisou este gist 5 days ago. Ir para a revisão
2 files changed, 0 insertions, 0 deletions
desafio03-coverage.png(arquivo criado)
Binary file changes are not shown
desafio03.zip(arquivo criado)
Binary file changes are not shown
l revisou este gist 5 days ago. Ir para a revisão
2 files changed, 7 deletions
desafio02-Dockerfile
| @@ -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 | |
desafio02-docker-compose.yml
| @@ -1,5 +1,3 @@ | |||
| 1 | - | version: '3.8' | |
| 2 | - | ||
| 3 | 1 | services: | |
| 4 | 2 | nginx: | |
| 5 | 3 | image: nginx:latest | |
Fernando Lira revisou este gist 5 days ago. Ir para a revisão
3 files changed, 54 insertions
desafio02-Dockerfile(arquivo criado)
| @@ -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 | |
desafio02-docker-compose.yml(arquivo criado)
| @@ -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 | |
desafio02-docker-ps.png(arquivo criado)
Binary file changes are not shown
l revisou este gist 1 week ago. Ir para a revisão
1 file changed, 117 insertions
desafio01.txt(arquivo criado)
| @@ -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 | + | ==================================================== | |