O objetivo deste howto é explicar os procedimentos de configuração do ambiente de desenvolvimento PHP 8 com JIT habilitado, composer, Apache, Adminer e SGBD MySQL 8 no Docker.
A premissa é ter Docker e Docker-Compose instalados, caso ainda não tenha, verifique Instalando Docker e Docker-Compose no Linux ou Instalando Docker e Docker-Compose no Windows 10
$ cd $HOME
$ mkdir -p ambiente-php8-apache-mysql-docker && cd ambiente-php8-apache-mysql-docker
$ mkdir -p php8-apache php8-apache/config src db
Os diretórios src, db são volumes mapeados entre o HOST e CONTAINER
O diretório ambiente-php8-apache-mysql-docker/src é onde estará os fontes do projeto no HOST que irá mapear no diretório /var/www/html no CONTAINER
O diretório ambiente-php8-apache-mysql-docker/db é onde está os arquivos do banco de dados no HOST que irá mapear no diretório /var/lib/mysql no CONTAINER
Se não tiver o volume db ao encerrar, o banco de dados irá para o espaço, pois o container é volátel.
Criar o Dockerfile para o PHP
php8-apache/Dockerfile
FROM php:8.0.1-apache-buster
RUN docker-php-ext-install pdo pdo_mysql bcmath opcache
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
Criar os arquivos de configuração do PHP
Habilitar o JIT
php8-apache/config/jit.ini
opcache.enable = 1
opcache.jit_buffer_size = 100M
opcache.jit = 1235
opcache.jit_debug = 0
Configurar o timezone, use conforme o seu fuso horário da sua região
php8-apache/config/timezone.ini
date.timezone = "America/Sao_Paulo"
Criar o arquivo docker-compose.yml na raiz do diretório ambiente-php8-apache-mysql-docker
OBS: Esteja atento a indentação do arquivo docker-compose.yml para o correto funcionamento na hora que for executar.docker-compose.yml
version: "3"
services:
php-apache:
container_name: php8-apache
build: ./php8-apache
ports:
- "8000:80"
volumes:
- ./src:/var/www/html
- ./php8-apache/config/jit.ini:/usr/local/etc/php/conf.d/jit.ini
- ./php8-apache/config/timezone.ini:/usr/local/etc/php/conf.d/timezone.ini
db:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: secret
volumes:
- "./db:/var/lib/mysql"
adminer:
image: adminer
restart: always
ports:
- 8080:8080
Executar o build e execução do ambiente na raiz do direitório ambiente-php8-apache-mysql
OBS: Antes de executar, verifique se as portas 8000, 8080 e 3306 estão disponíveis na sua máquina.
$ docker-compose up -d
Aguarde e após estiver OK, crie um arquivo ambiente-php8-apache-mysql/src/info.php
<?php
phpinfo();
Acesse no browser http://localhost:8000/info.php e para gerenciar bancos de dados http://localhost:8080
Usos gerais no container no ambiente
Para verificar logs do container php8-apache
$ docker logs php8-apache
Para acessar o container similar o acesso SSH
$ docker exec -it php8-apache bash
Para instalar alguma lib/framework via composer no container php8-apache
Acesse o diretório ambiente-php8-apache-mysql-docker/src e execute para iniciar um novo projeto com framework Laravel
$ docker exec -it php8-apache composer create-project laravel/laravel
Referências
Ambiente PHP 8 com Apache no DockerFeito!
Excelente tutorial, muito obrigado!
ResponderExcluir