marco 3a50f0550e docs: add docs folder documentation and update project structure rules
Add documentation explaining the docs/ directory purpose for storing
project and container-related documents like guides, configuration notes,
and useful commands. Update RULES.md to include the new directory in the
project structure listing.
2026-09-06 19:47:36 -03:00
2026-09-06 19:35:42 -03:00
2026-09-06 19:35:42 -03:00

SyspanelLamp

Um container Docker completo com Ubuntu 24.04, Apache, PHP 8.3, PHPMyAdmin, Adminer, Redis e escolha de banco: MySQL 8.0 ou MariaDB.

Autor: Marco Costa & Syspanel — www.syspanel.com.br Data de criação: 05/09/2026 Licença: MIT


Índice


Visão Geral

Imagem Docker completa para desenvolvimento local de aplicações PHP (WordPress, Laravel, CodeIgniter, etc.), com todos os serviços necessários já pré-configurados. Escolha entre MySQL 8.0 ou MariaDB no momento do build.

O que já vem incluído

Componente Versão
Ubuntu 24.04 (Noble)
Apache 2.4
PHP 8.3 (nativo do Ubuntu 24.04)
PHPMyAdmin 5.2.1
Adminer 6.0.1
Redis 7.0.15

Variantes de Banco de Dados

Variante Build Arg Imagem Tag
MySQL 8.0 DATABASE=mysql8 latest-2404-php83-mysql
MariaDB DATABASE=mariadb latest-2404-php83-mariadb

Requisitos

  • Docker Engine 20.10+

Build

MySQL 8.0

docker build --no-cache \
  --build-arg PHP_VERSION=8.3 \
  --build-arg DATABASE=mysql8 \
  --build-arg DB_ROOT_PASS=admin123 \
  -t syspanel/dockersyspanellamp:latest-2404-php83-mysql \
  -f ./2404/Dockerfile.mysql8 .

MariaDB

docker build --no-cache \
  --build-arg PHP_VERSION=8.3 \
  --build-arg DATABASE=mariadb \
  --build-arg DB_ROOT_PASS=admin123 \
  -t syspanel/dockersyspanellamp:latest-2404-php83-mariadb \
  -f ./2404/Dockerfile.mariadb .

Argumentos de Build

Argumento Padrão Descrição
PHP_VERSION 8.3 Versão do PHP (Ubuntu 24.04 inclui 8.3 nativamente)
DATABASE mysql8 Tipo de banco: mysql8 ou mariadb
DB_ROOT_PASS admin123 Senha do usuário root/administrador do banco

Executar

MySQL 8.0

docker run --name "syspanelampp" \
    -p "16900:80" -p "16901:3306" -p "16902:6379" -p "16905:5050" \
    -v ${PWD}/app:/app \
    -v ${PWD}/mysql-mysql8:/var/lib/mysql \
    -e DATABASE=mysql8 \
    -e DB_ROOT_PASS=admin123 \
    syspanel/dockersyspanellamp:latest-2404-php83-mysql

MariaDB

docker run --name "syspanelampp" \
    -p "16900:80" -p "16901:3306" -p "16902:6379" -p "16905:5050" \
    -v ${PWD}/app:/app \
    -v ${PWD}/mysql-mariadb:/var/lib/mysql \
    -e DATABASE=mariadb \
    -e DB_ROOT_PASS=admin123 \
    syspanel/dockersyspanellamp:latest-2404-php83-mariadb

Parâmetros do docker run

Parâmetro Descrição
-p 16900:80 Porta HTTP do Apache (http://localhost:16900)
-p 16901:3306 Porta MySQL/MariaDB
-p 16902:6379 Porta do Redis
-p 16905:5050 Porta reservada
-v ${PWD}/app:/app Volume com o código da aplicação
-v ${PWD}/mysql-mysql8:/var/lib/mysql Volume MySQL 8.0
-v ${PWD}/mysql-mariadb:/var/lib/mysql Volume MariaDB
-e DATABASE Tipo de banco de dados (mysql8 ou mariadb)
-e DB_ROOT_PASS Senha do root do banco

Serviços e Portas

MySQL 8.0 / MariaDB

Serviço URL Local Credenciais
Apache / App http://localhost:16900 —
PHPMyAdmin http://localhost:16900/phpmyadmin root / admin123
Adminer http://localhost:16900/adminer root / admin123
MySQL/MariaDB localhost:16901 root / admin123
Redis localhost:16902 sem senha

Extensões PHP

A imagem inclui todas as extensões necessárias para WordPress, Laravel e demais frameworks PHP:

Extensão Uso
curl Requisições HTTP
mbstring Manipulação de strings multibyte
mysqli / pdo_mysql Conexão com MySQL/MariaDB
xml Manipulação de XML
zip Compactação/descompactação
gd / imagick Processamento de imagens
intl Internacionalização
bcmath Cálculos de precisão
soap Web Services SOAP
redis Cliente Redis
opcache Cache de bytecode
memcached Cache em memória

Configuração do PHP

O arquivo configs/php/php.ini centraliza as configurações do PHP 8.3 aplicadas tanto ao Apache quanto ao CLI:

Diretiva Valor
date.timezone America/Sao_Paulo
memory_limit 2048M
upload_max_filesize 2048M
post_max_size 2048M
max_input_vars 2000
max_execution_time 300
max_input_time 300

Para alterar qualquer configuração, basta editar configs/php/php.ini e reconstruir a imagem.


Acesso

MySQL 8.0 / MariaDB (linha de comando)

docker exec -it syspanelampp mysql -u root -p

Redis (CLI)

docker exec -it syspanelampp redis-cli

Ver versão do PHP

docker exec -it syspanelampp php -v

Ver extensões PHP instaladas

docker exec -it syspanelampp php -m

Documentação

A pasta docs/ é reservada para armazenar documentos diversos relativos ao projeto e aos containers criados, como guias, anotações de configuração, comandos úteis, etc.


Volume de Dados

Código da Aplicação

O diretório ${PWD}/app no host é montado em /app dentro do container e também em /var/www/html/public (DocumentRoot do Apache). Qualquer arquivo .htaccess será respeitado.

Dados do Banco

Banco de Dados Volume no Host Caminho no Container
MySQL 8.0 ${PWD}/mysql-mysql8 /var/lib/mysql
MariaDB ${PWD}/mysql-mariadb /var/lib/mysql

Importante: Os arquivos de configuração (my.cnf, init.sql) estão no diretório configs/mysql/ do projeto e são empacotados na imagem Docker. Eles não ficam no volume de dados — dessa forma, trocar de variante de banco não causa conflitos de arquivos residuais.

Bancos criados automaticamente

Na primeira inicialização, os seguintes bancos são criados:

Banco Usuário Senha
app app app123
wordpress wordpress wp123
laravel laravel laravel123

O usuário root tem a senha definida por DB_ROOT_PASS (padrão: admin123).


Primeiro Boot

O sistema detecta automaticamente se é o primeiro boot e realiza as configurações iniciais:

  • Define a senha do usuário root
  • Cria os bancos de dados app, wordpress e laravel
  • Cria os usuários correspondentes com permissões
  • Executa o script de inicialização (init.sql)
  • Inicia o Redis
  • Cria os diretórios /app e /var/www/html/public

Troubleshooting

Troca de variante de banco de dados

Os volumes ${PWD}/mysql-mysql8 e ${PWD}/mysql-mariadb são separados — cada variante tem seu próprio volume. Isso evita conflitos de arquivos residuais ao trocar de banco.

Se você usava o diretório ${PWD}/mysql com MariaDB e quer usar MySQL 8.0, use o diretório ${PWD}/mysql-mysql8 ou limpe o volume antes:

rm -rf ${PWD}/mysql/*

O sistema também detecta automaticamente dados incompletos (sem auto.cnf no MySQL) e reinicializa o volume com uma mensagem de aviso no log.

MySQL / MariaDB não inicia — permissões incorretas

Se o diretório de dados foi criado com permissões incorretas:

sudo chown -R 999:999 ${PWD}/mysql-mysql8
sudo chown -R 999:999 ${PWD}/mysql-mariadb

Permissão negada no Apache

docker exec -it syspanelampp chown -R www-data:www-data /app /var/www/html/public

Reconstruir a imagem do zero

# MySQL 8.0
docker build --no-cache \
  --build-arg PHP_VERSION=8.3 \
  --build-arg DATABASE=mysql8 \
  --build-arg DB_ROOT_PASS=admin123 \
  -t syspanel/dockersyspanellamp:latest-2404-php83-mysql \
  -f ./2404/Dockerfile.mysql8 .

# MariaDB
docker build --no-cache \
  --build-arg PHP_VERSION=8.3 \
  --build-arg DATABASE=mariadb \
  --build-arg DB_ROOT_PASS=admin123 \
  -t syspanel/dockersyspanellamp:latest-2404-php83-mariadb \
  -f ./2404/Dockerfile.mariadb .

Desenvolvido por Marco Costa & Syspanel — www.syspanel.com.br Licença MIT

S
Description
No description provided
Readme MIT
50 KiB
Languages
Shell 100%