desafio01.txt
· 3.9 KiB · Text
Bruto
====================================================
DETALHES - Desafio Aula01 | NextGenPHP5
====================================================
----------------------------------------------------
1. Versão do PHP e Zend Engine
----------------------------------------------------
Comando para verificar:
docker compose exec php php -v
Saída esperada (PHP 8.3 Alpine):
PHP 8.3.x (cli) (built: ...)
Copyright (c) The PHP Group
Zend Engine v4.3.x, Copyright (c) Zend Technologies
----------------------------------------------------
2. Extensões instaladas
----------------------------------------------------
Comando para verificar:
docker compose exec php php -m
Extensões padrão da imagem php:8.3-alpine:
Core, ctype, curl, date, dom, fileinfo, filter,
ftp, hash, iconv, json, libxml, mbstring, mysqlnd,
openssl, pcre, PDO, pdo_sqlite, Phar, posix,
readline, Reflection, session, SimpleXML, sodium,
SPL, sqlite3, standard, tokenizer, xml, xmlreader,
xmlwriter, zlib
----------------------------------------------------
3. Localização do php.ini no contêiner
----------------------------------------------------
Comando para verificar:
docker compose exec php php --ini
Caminho do php.ini na imagem php:8.3-alpine:
/usr/local/etc/php/php.ini
----------------------------------------------------
4. Substituição do php.ini interno por volume
----------------------------------------------------
Configurado no docker-compose.yml com o mapeamento:
./php.ini:/usr/local/etc/php/php.ini
O arquivo local ./php.ini substitui o php.ini
interno do contêiner via volume do Docker.
----------------------------------------------------
5. Horário padrão do PHP ajustado
----------------------------------------------------
Configuração aplicada em ./php.ini:
date.timezone = America/Sao_Paulo
Verificar no contêiner:
docker compose exec php php -r "echo date('d/m/Y H:i:s');"
----------------------------------------------------
6. Limite de memória aumentado para 512MB
----------------------------------------------------
Configuração aplicada em ./php.ini:
memory_limit = 512M
Verificar no contêiner:
docker compose exec php php -r "echo ini_get('memory_limit');"
Saída esperada: 512M
----------------------------------------------------
8. Correção do erro de exibição do projeto
----------------------------------------------------
Bug encontrado em ./index.php na função formatServices():
ANTES (incorreto):
return $services; // retornava o array, não a string HTML
DEPOIS (correto):
return $servicesHtml; // retorna a string HTML montada
Acessar o projeto em: http://localhost:8011
----------------------------------------------------
DESAFIO EXTRA 1: Versão da extensão pdo_sqlite
----------------------------------------------------
Comando para verificar:
docker compose exec php php -r "
\$pdo = new PDO('sqlite::memory:');
\$stmt = \$pdo->query('SELECT sqlite_version()');
echo 'SQLite version: ' . \$stmt->fetchColumn() . PHP_EOL;
echo 'pdo_sqlite version acompanha SQLite: ' . phpversion('pdo_sqlite') . PHP_EOL;
"
Alternativa via phpinfo:
docker compose exec php php -r "phpinfo();" | grep -i sqlite
----------------------------------------------------
DESAFIO EXTRA 2: Compilar o PHP
----------------------------------------------------
Passos disponíveis em: ../README.md
Resumo:
1. git clone --depth=1 [email protected]:php/php-src.git
2. cd php-src && git checkout php-8.4.3
3. docker compose up -d && docker compose exec ubuntu bash
4. apt update && apt install -y pkg-config build-essential \
autoconf bison re2c libxml2-dev libsqlite3-dev
5. ./buildconf
6. ./configure --enable-debug
7. make -j$(nproc)
8. make test
9. make install
====================================================
Para rodar o projeto
====================================================
docker compose up -d
Acesse: http://localhost:8011
====================================================
| 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 | ==================================================== |
| 118 |
desafio02-Dockerfile
· 436 B · Text
Bruto
FROM php:8.2-fpm
# Instalar dependências do sistema
RUN apt-get update && apt-get install -y \
libpq-dev \
&& docker-php-ext-install pdo_pgsql opcache
# Instalar xdebug via pecl
RUN pecl install xdebug \
&& docker-php-ext-enable xdebug
# Copiar php.ini se necessário (será montado via volume no docker-compose, mas podemos copiar também)
# COPY php.ini /usr/local/etc/php/conf.d/custom-php.ini
WORKDIR /var/www/html
| 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 |
| 16 |
desafio02-docker-compose.yml
· 698 B · YAML
Bruto
version: '3.8'
services:
nginx:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
networks:
- app-network
php:
image: lira/php:8.2-fpm-aula02
volumes:
- ./src:/var/www/html
- ./php.ini:/usr/local/etc/php/conf.d/custom.ini
depends_on:
- db
networks:
- app-network
db:
image: postgres:15
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: user
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
networks:
- app-network
networks:
app-network:
driver: bridge
| 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 |
| 40 |
desafio02-docker-ps.png
· 131 KiB · Image (PNG)
Bruto
desafio03-coverage.png
· 204 KiB · Image (PNG)
Bruto
desafio03.zip
· 2.5 MiB · Binary
Bruto
This file can't be rendered. Ver arquivo completo.