@hotwyl/init-docker-minimal-dev 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +0 -0
- package/bin/cli.js +82 -0
- package/package.json +27 -0
- package/template/.env +22 -0
- package/template/Dockerfile +73 -0
- package/template/README.md +532 -0
- package/template/apache/.gitkeep +1 -0
- package/template/config/apache/000-default.conf +39 -0
- package/template/config/mysql/init/01-init.sql +42 -0
- package/template/config/mysql/my.cnf +33 -0
- package/template/config/php/php.ini +95 -0
- package/template/docker-compose.yml +89 -0
- package/template/www/.htaccess +181 -0
- package/template/www/errors/403.html +48 -0
- package/template/www/errors/404.html +48 -0
- package/template/www/errors/500.html +48 -0
- package/template/www/index.php +501 -0
- package/template/www/phpinfo.php +10 -0
|
@@ -0,0 +1,532 @@
|
|
|
1
|
+
# 🐳 MinimalDev - Ambiente de Desenvolvimento Docker
|
|
2
|
+
|
|
3
|
+
Um ambiente de desenvolvimento completo e moderno com **PHP**, **MySQL**, **Node.js**, **Apache** e **phpMyAdmin**, configurado para facilitar o desenvolvimento web.
|
|
4
|
+
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+

|
|
8
|
+

|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 📋 Índice
|
|
14
|
+
|
|
15
|
+
- [Requisitos](#-requisitos)
|
|
16
|
+
- [Instalação Rápida](#-instalação-rápida)
|
|
17
|
+
- [Estrutura do Projeto](#-estrutura-do-projeto)
|
|
18
|
+
- [Serviços Disponíveis](#-serviços-disponíveis)
|
|
19
|
+
- [Comandos Úteis](#-comandos-úteis)
|
|
20
|
+
- [Configuração do Banco de Dados](#-configuração-do-banco-de-dados)
|
|
21
|
+
- [Trabalhando com PHP e Composer](#-trabalhando-com-php-e-composer)
|
|
22
|
+
- [Trabalhando com Node.js e npm](#-trabalhando-com-nodejs-e-npm)
|
|
23
|
+
- [Criando Novos Projetos](#-criando-novos-projetos)
|
|
24
|
+
- [Debugging com Xdebug](#-debugging-com-xdebug)
|
|
25
|
+
- [Dicas e Boas Práticas](#-dicas-e-boas-práticas)
|
|
26
|
+
- [Solução de Problemas](#-solução-de-problemas)
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 🔧 Requisitos
|
|
31
|
+
|
|
32
|
+
Antes de começar, você precisa ter instalado em sua máquina:
|
|
33
|
+
|
|
34
|
+
### Windows
|
|
35
|
+
|
|
36
|
+
1. **Docker Desktop** - [Download](https://www.docker.com/products/docker-desktop/)
|
|
37
|
+
2. **Git** (opcional) - [Download](https://git-scm.com/downloads)
|
|
38
|
+
3. **VS Code** (recomendado) - [Download](https://code.visualstudio.com/)
|
|
39
|
+
|
|
40
|
+
### Instalando Docker Desktop no Windows
|
|
41
|
+
|
|
42
|
+
1. Baixe o Docker Desktop do site oficial
|
|
43
|
+
2. Execute o instalador
|
|
44
|
+
3. **Importante**: Habilite o WSL 2 quando solicitado
|
|
45
|
+
4. Reinicie o computador
|
|
46
|
+
5. Abra o Docker Desktop e aguarde iniciar
|
|
47
|
+
|
|
48
|
+
Para verificar se está funcionando, abra o terminal (PowerShell ou CMD) e digite:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
docker --version
|
|
52
|
+
docker-compose --version
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 🚀 Instalação Rápida
|
|
58
|
+
|
|
59
|
+
### Passo 1: Navegue até a pasta do projeto
|
|
60
|
+
|
|
61
|
+
```powershell
|
|
62
|
+
cd D:\laragon\www\3wonline\wiki\ambientes\minimaldev
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Passo 2: Iniciar os containers
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Construir e iniciar todos os serviços
|
|
69
|
+
docker-compose up -d --build
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
> ⏳ **Primeira execução**: A primeira vez pode demorar alguns minutos, pois o Docker precisa baixar todas as imagens e construir o ambiente.
|
|
73
|
+
|
|
74
|
+
### Passo 3: Acessar o ambiente
|
|
75
|
+
|
|
76
|
+
- **Website**: http://localhost
|
|
77
|
+
- **phpMyAdmin**: http://localhost:8080
|
|
78
|
+
|
|
79
|
+
🎉 **Pronto!** Seu ambiente está funcionando!
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 📁 Estrutura do Projeto
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
minimaldev/
|
|
87
|
+
├── 📄 docker-compose.yml # Configuração dos containers
|
|
88
|
+
├── 📄 Dockerfile # Imagem personalizada PHP/Apache
|
|
89
|
+
├── 📄 .env # Variáveis de ambiente
|
|
90
|
+
├── 📄 README.md # Este arquivo
|
|
91
|
+
│
|
|
92
|
+
├── 📁 config/ # Configurações dos serviços
|
|
93
|
+
│ ├── 📁 php/
|
|
94
|
+
│ │ └── php.ini # Configurações do PHP
|
|
95
|
+
│ ├── 📁 apache/
|
|
96
|
+
│ │ └── 000-default.conf # Virtual host do Apache
|
|
97
|
+
│ └── 📁 mysql/
|
|
98
|
+
│ ├── my.cnf # Configurações do MySQL
|
|
99
|
+
│ └── 📁 init/
|
|
100
|
+
│ └── 01-init.sql # Script de inicialização do banco
|
|
101
|
+
│
|
|
102
|
+
├── 📁 www/ # 🎯 SEUS PROJETOS AQUI!
|
|
103
|
+
│ ├── index.php # Página inicial do ambiente
|
|
104
|
+
│ ├── phpinfo.php # Informações do PHP
|
|
105
|
+
│ ├── .htaccess # Configurações do Apache
|
|
106
|
+
│ └── 📁 errors/ # Páginas de erro personalizadas
|
|
107
|
+
│
|
|
108
|
+
└── 📁 logs/ # Logs dos serviços
|
|
109
|
+
└── 📁 apache/ # Logs do Apache
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 🌐 Serviços Disponíveis
|
|
115
|
+
|
|
116
|
+
| Serviço | Container | Porta | URL de Acesso |
|
|
117
|
+
| ---------------- | --------------------- | ------- | --------------------- |
|
|
118
|
+
| **Apache + PHP** | minimaldev-web | 80, 443 | http://localhost |
|
|
119
|
+
| **MySQL** | minimaldev-mysql | 3306 | localhost:3306 |
|
|
120
|
+
| **phpMyAdmin** | minimaldev-phpmyadmin | 8080 | http://localhost:8080 |
|
|
121
|
+
| **Node.js** | minimaldev-node | - | Via terminal |
|
|
122
|
+
|
|
123
|
+
### Versões Instaladas
|
|
124
|
+
|
|
125
|
+
- **PHP**: 8.3 (última versão estável)
|
|
126
|
+
- **Node.js**: LTS (última versão)
|
|
127
|
+
- **MySQL**: 8.x (última versão)
|
|
128
|
+
- **Apache**: 2.4
|
|
129
|
+
- **Composer**: Última versão
|
|
130
|
+
|
|
131
|
+
### Extensões PHP Instaladas
|
|
132
|
+
|
|
133
|
+
- PDO, PDO_MySQL, MySQLi
|
|
134
|
+
- GD (com suporte a JPEG, PNG, WebP)
|
|
135
|
+
- Mbstring, iconv
|
|
136
|
+
- Zip, Zlib
|
|
137
|
+
- Intl, BCMath
|
|
138
|
+
- OPcache, Redis
|
|
139
|
+
- Xdebug (para debugging)
|
|
140
|
+
- SOAP, XML
|
|
141
|
+
- E muitas outras...
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## 💻 Comandos Úteis
|
|
146
|
+
|
|
147
|
+
### Gerenciamento dos Containers
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
# Iniciar todos os containers
|
|
151
|
+
docker-compose up -d
|
|
152
|
+
|
|
153
|
+
# Iniciar e reconstruir (após mudanças no Dockerfile)
|
|
154
|
+
docker-compose up -d --build
|
|
155
|
+
|
|
156
|
+
# Parar todos os containers
|
|
157
|
+
docker-compose down
|
|
158
|
+
|
|
159
|
+
# Parar e remover volumes (⚠️ APAGA DADOS DO BANCO!)
|
|
160
|
+
docker-compose down -v
|
|
161
|
+
|
|
162
|
+
# Ver status dos containers
|
|
163
|
+
docker-compose ps
|
|
164
|
+
|
|
165
|
+
# Ver logs em tempo real
|
|
166
|
+
docker-compose logs -f
|
|
167
|
+
|
|
168
|
+
# Ver logs de um serviço específico
|
|
169
|
+
docker-compose logs -f web
|
|
170
|
+
docker-compose logs -f mysql
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Acessando os Containers
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# Acessar terminal do container PHP/Apache
|
|
177
|
+
docker exec -it minimaldev-web bash
|
|
178
|
+
|
|
179
|
+
# Acessar terminal do container Node.js
|
|
180
|
+
docker exec -it minimaldev-node bash
|
|
181
|
+
|
|
182
|
+
# Acessar terminal do MySQL
|
|
183
|
+
docker exec -it minimaldev-mysql mysql -u root -p
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Reiniciar Serviços
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
# Reiniciar Apache (após mudanças de configuração)
|
|
190
|
+
docker exec minimaldev-web service apache2 reload
|
|
191
|
+
|
|
192
|
+
# Reiniciar todos os containers
|
|
193
|
+
docker-compose restart
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 🗄️ Configuração do Banco de Dados
|
|
199
|
+
|
|
200
|
+
### Credenciais Padrão
|
|
201
|
+
|
|
202
|
+
| Campo | Valor |
|
|
203
|
+
| ---------------- | -------------------------------------------------------- |
|
|
204
|
+
| **Host** | `mysql` (dentro dos containers) ou `localhost` (externo) |
|
|
205
|
+
| **Porta** | `3306` |
|
|
206
|
+
| **Usuário Root** | `root` |
|
|
207
|
+
| **Senha Root** | `root` |
|
|
208
|
+
| **Usuário Dev** | `developer` |
|
|
209
|
+
| **Senha Dev** | `developer123` |
|
|
210
|
+
| **Database** | `minimaldev` |
|
|
211
|
+
|
|
212
|
+
### Conectando via PHP
|
|
213
|
+
|
|
214
|
+
```php
|
|
215
|
+
<?php
|
|
216
|
+
// Conexão PDO (recomendado)
|
|
217
|
+
$pdo = new PDO(
|
|
218
|
+
'mysql:host=mysql;dbname=minimaldev;charset=utf8mb4',
|
|
219
|
+
'developer',
|
|
220
|
+
'developer123',
|
|
221
|
+
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
|
|
222
|
+
);
|
|
223
|
+
|
|
224
|
+
// Conexão MySQLi
|
|
225
|
+
$mysqli = new mysqli('mysql', 'developer', 'developer123', 'minimaldev');
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Conectando via Software Externo (DBeaver, HeidiSQL, etc.)
|
|
229
|
+
|
|
230
|
+
- **Host**: `127.0.0.1` ou `localhost`
|
|
231
|
+
- **Porta**: `3306`
|
|
232
|
+
- **Usuário**: `root` ou `developer`
|
|
233
|
+
- **Senha**: Conforme tabela acima
|
|
234
|
+
|
|
235
|
+
### Criar Novo Banco de Dados
|
|
236
|
+
|
|
237
|
+
1. Acesse o phpMyAdmin: http://localhost:8080
|
|
238
|
+
2. Clique em "Novo" no menu lateral
|
|
239
|
+
3. Digite o nome do banco e clique em "Criar"
|
|
240
|
+
|
|
241
|
+
Ou via terminal:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
docker exec -it minimaldev-mysql mysql -u root -p -e "CREATE DATABASE meu_banco CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 🐘 Trabalhando com PHP e Composer
|
|
250
|
+
|
|
251
|
+
### Executar Composer
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# Instalar dependências (composer install)
|
|
255
|
+
docker exec -it minimaldev-web composer install
|
|
256
|
+
|
|
257
|
+
# Adicionar pacote
|
|
258
|
+
docker exec -it minimaldev-web composer require nome/pacote
|
|
259
|
+
|
|
260
|
+
# Atualizar dependências
|
|
261
|
+
docker exec -it minimaldev-web composer update
|
|
262
|
+
|
|
263
|
+
# Criar novo projeto Laravel
|
|
264
|
+
docker exec -it minimaldev-web composer create-project laravel/laravel meu-projeto
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Executar Scripts PHP
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
# Executar um arquivo PHP
|
|
271
|
+
docker exec -it minimaldev-web php /var/www/html/meu-script.php
|
|
272
|
+
|
|
273
|
+
# PHP interativo
|
|
274
|
+
docker exec -it minimaldev-web php -a
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## 📦 Trabalhando com Node.js e npm
|
|
280
|
+
|
|
281
|
+
O Node.js está disponível em um container separado, compartilhando a pasta `www/`.
|
|
282
|
+
|
|
283
|
+
### Comandos npm
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
# Ver versão do Node.js
|
|
287
|
+
docker exec -it minimaldev-node node -v
|
|
288
|
+
|
|
289
|
+
# Ver versão do npm
|
|
290
|
+
docker exec -it minimaldev-node npm -v
|
|
291
|
+
|
|
292
|
+
# Instalar dependências
|
|
293
|
+
docker exec -it minimaldev-node npm install
|
|
294
|
+
|
|
295
|
+
# Adicionar pacote
|
|
296
|
+
docker exec -it minimaldev-node npm install nome-pacote
|
|
297
|
+
|
|
298
|
+
# Executar scripts
|
|
299
|
+
docker exec -it minimaldev-node npm run build
|
|
300
|
+
docker exec -it minimaldev-node npm run dev
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Trabalhando em um Projeto Específico
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
# Navegar para pasta do projeto e executar comandos
|
|
307
|
+
docker exec -it minimaldev-node bash -c "cd /var/www/html/meu-projeto && npm install"
|
|
308
|
+
docker exec -it minimaldev-node bash -c "cd /var/www/html/meu-projeto && npm run dev"
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Criar Projetos Frontend
|
|
312
|
+
|
|
313
|
+
```bash
|
|
314
|
+
# Criar projeto React
|
|
315
|
+
docker exec -it minimaldev-node npx create-react-app meu-app
|
|
316
|
+
|
|
317
|
+
# Criar projeto Vue.js
|
|
318
|
+
docker exec -it minimaldev-node npm create vue@latest meu-app
|
|
319
|
+
|
|
320
|
+
# Criar projeto Vite
|
|
321
|
+
docker exec -it minimaldev-node npm create vite@latest meu-app
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## 🆕 Criando Novos Projetos
|
|
327
|
+
|
|
328
|
+
### Projeto PHP Simples
|
|
329
|
+
|
|
330
|
+
1. Crie uma pasta dentro de `www/`:
|
|
331
|
+
|
|
332
|
+
```
|
|
333
|
+
www/meu-projeto/
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
2. Adicione um `index.php`:
|
|
337
|
+
|
|
338
|
+
```php
|
|
339
|
+
<?php
|
|
340
|
+
echo "Olá, Mundo!";
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
3. Acesse: http://localhost/meu-projeto/
|
|
344
|
+
|
|
345
|
+
### Projeto Laravel
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
# Criar projeto Laravel
|
|
349
|
+
docker exec -it minimaldev-web composer create-project laravel/laravel www/meu-laravel
|
|
350
|
+
|
|
351
|
+
# Acessar: http://localhost/meu-laravel/public/
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### Projeto WordPress
|
|
355
|
+
|
|
356
|
+
1. Baixe o WordPress em https://wordpress.org/download/
|
|
357
|
+
2. Extraia para `www/wordpress/`
|
|
358
|
+
3. Crie um banco de dados no phpMyAdmin
|
|
359
|
+
4. Acesse http://localhost/wordpress/ e siga a instalação
|
|
360
|
+
|
|
361
|
+
---
|
|
362
|
+
|
|
363
|
+
## 🐛 Debugging com Xdebug
|
|
364
|
+
|
|
365
|
+
O Xdebug já vem configurado e pronto para uso com VS Code.
|
|
366
|
+
|
|
367
|
+
### Configuração VS Code
|
|
368
|
+
|
|
369
|
+
1. Instale a extensão **PHP Debug** (felixfbecker.php-debug)
|
|
370
|
+
|
|
371
|
+
2. Crie o arquivo `.vscode/launch.json` no seu projeto:
|
|
372
|
+
|
|
373
|
+
```json
|
|
374
|
+
{
|
|
375
|
+
"version": "0.2.0",
|
|
376
|
+
"configurations": [
|
|
377
|
+
{
|
|
378
|
+
"name": "Listen for Xdebug",
|
|
379
|
+
"type": "php",
|
|
380
|
+
"request": "launch",
|
|
381
|
+
"port": 9003,
|
|
382
|
+
"pathMappings": {
|
|
383
|
+
"/var/www/html": "${workspaceFolder}/www"
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
]
|
|
387
|
+
}
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
3. Pressione F5 para iniciar o debugger
|
|
391
|
+
4. Adicione breakpoints no código
|
|
392
|
+
5. Acesse a página no navegador
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## 💡 Dicas e Boas Práticas
|
|
397
|
+
|
|
398
|
+
### 1. Mantenha os Dados Seguros
|
|
399
|
+
|
|
400
|
+
- Nunca commite senhas reais no `.env`
|
|
401
|
+
- Use o `.gitignore` para ignorar arquivos sensíveis
|
|
402
|
+
|
|
403
|
+
### 2. Backup do Banco de Dados
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
# Exportar banco
|
|
407
|
+
docker exec minimaldev-mysql mysqldump -u root -proot minimaldev > backup.sql
|
|
408
|
+
|
|
409
|
+
# Importar banco
|
|
410
|
+
docker exec -i minimaldev-mysql mysql -u root -proot minimaldev < backup.sql
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
### 3. Limpar Espaço do Docker
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
# Remover containers parados
|
|
417
|
+
docker container prune
|
|
418
|
+
|
|
419
|
+
# Remover imagens não utilizadas
|
|
420
|
+
docker image prune
|
|
421
|
+
|
|
422
|
+
# Limpeza completa (cuidado!)
|
|
423
|
+
docker system prune -a
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### 4. Alterar Configurações
|
|
427
|
+
|
|
428
|
+
- Após modificar `php.ini`, `my.cnf` ou `000-default.conf`, reinicie os containers:
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
docker-compose restart
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
### 5. Logs para Debug
|
|
435
|
+
|
|
436
|
+
- Logs do PHP: `logs/apache/php_errors.log`
|
|
437
|
+
- Logs do Apache: `logs/apache/error.log`
|
|
438
|
+
- Logs do MySQL: `docker-compose logs mysql`
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
## 🔧 Solução de Problemas
|
|
443
|
+
|
|
444
|
+
### ❌ Porta 80 já está em uso
|
|
445
|
+
|
|
446
|
+
**Problema**: Outro serviço (Laragon, XAMPP, IIS, Skype) está usando a porta 80.
|
|
447
|
+
|
|
448
|
+
**Solução**:
|
|
449
|
+
|
|
450
|
+
1. Pare o outro serviço, OU
|
|
451
|
+
2. Mude a porta no `docker-compose.yml`:
|
|
452
|
+
|
|
453
|
+
```yaml
|
|
454
|
+
ports:
|
|
455
|
+
- "8000:80" # Acesse via http://localhost:8000
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
### ❌ Container não inicia
|
|
459
|
+
|
|
460
|
+
```bash
|
|
461
|
+
# Ver logs de erro
|
|
462
|
+
docker-compose logs web
|
|
463
|
+
|
|
464
|
+
# Reconstruir a imagem
|
|
465
|
+
docker-compose up -d --build --force-recreate
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
### ❌ Erro de permissão em arquivos
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
# Dentro do container, ajustar permissões
|
|
472
|
+
docker exec -it minimaldev-web chown -R www-data:www-data /var/www/html
|
|
473
|
+
docker exec -it minimaldev-web chmod -R 755 /var/www/html
|
|
474
|
+
```
|
|
475
|
+
|
|
476
|
+
### ❌ MySQL não conecta
|
|
477
|
+
|
|
478
|
+
1. Verifique se o container está rodando:
|
|
479
|
+
|
|
480
|
+
```bash
|
|
481
|
+
docker-compose ps
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
2. Aguarde alguns segundos após iniciar (MySQL demora para inicializar)
|
|
485
|
+
|
|
486
|
+
3. Verifique os logs:
|
|
487
|
+
|
|
488
|
+
```bash
|
|
489
|
+
docker-compose logs mysql
|
|
490
|
+
```
|
|
491
|
+
|
|
492
|
+
### ❌ Extensão PHP não encontrada
|
|
493
|
+
|
|
494
|
+
Adicione a extensão no `Dockerfile` e reconstrua:
|
|
495
|
+
|
|
496
|
+
```bash
|
|
497
|
+
docker-compose up -d --build
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
### ❌ Composer muito lento
|
|
501
|
+
|
|
502
|
+
O Composer pode ser lento na primeira execução. Use:
|
|
503
|
+
|
|
504
|
+
```bash
|
|
505
|
+
docker exec -it minimaldev-web composer config -g repo.packagist composer https://packagist.org
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
## 📚 Recursos Adicionais
|
|
511
|
+
|
|
512
|
+
- [Documentação Docker](https://docs.docker.com/)
|
|
513
|
+
- [Documentação PHP](https://www.php.net/docs.php)
|
|
514
|
+
- [Documentação MySQL](https://dev.mysql.com/doc/)
|
|
515
|
+
- [Documentação Node.js](https://nodejs.org/docs/)
|
|
516
|
+
- [Documentação Composer](https://getcomposer.org/doc/)
|
|
517
|
+
|
|
518
|
+
---
|
|
519
|
+
|
|
520
|
+
## 🤝 Contribuição
|
|
521
|
+
|
|
522
|
+
Sinta-se à vontade para melhorar este ambiente! Sugestões e pull requests são bem-vindos.
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
## 📄 Licença
|
|
527
|
+
|
|
528
|
+
Este projeto é livre para uso e modificação.
|
|
529
|
+
|
|
530
|
+
---
|
|
531
|
+
|
|
532
|
+
**Desenvolvido com ❤️ para facilitar a vida de desenvolvedores**
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Placeholder para manter a pasta no Git
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<VirtualHost *:80>
|
|
2
|
+
ServerAdmin webmaster@localhost
|
|
3
|
+
DocumentRoot /var/www/html
|
|
4
|
+
|
|
5
|
+
<Directory /var/www/html>
|
|
6
|
+
Options Indexes FollowSymLinks MultiViews
|
|
7
|
+
AllowOverride All
|
|
8
|
+
Require all granted
|
|
9
|
+
DirectoryIndex index.php index.html index.htm
|
|
10
|
+
</Directory>
|
|
11
|
+
|
|
12
|
+
# Configuração de logs
|
|
13
|
+
ErrorLog ${APACHE_LOG_DIR}/error.log
|
|
14
|
+
CustomLog ${APACHE_LOG_DIR}/access.log combined
|
|
15
|
+
|
|
16
|
+
# Compressão GZIP
|
|
17
|
+
<IfModule mod_deflate.c>
|
|
18
|
+
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
|
|
19
|
+
</IfModule>
|
|
20
|
+
|
|
21
|
+
# Cache de arquivos estáticos
|
|
22
|
+
<IfModule mod_expires.c>
|
|
23
|
+
ExpiresActive On
|
|
24
|
+
ExpiresByType image/jpg "access plus 1 month"
|
|
25
|
+
ExpiresByType image/jpeg "access plus 1 month"
|
|
26
|
+
ExpiresByType image/gif "access plus 1 month"
|
|
27
|
+
ExpiresByType image/png "access plus 1 month"
|
|
28
|
+
ExpiresByType image/webp "access plus 1 month"
|
|
29
|
+
ExpiresByType text/css "access plus 1 week"
|
|
30
|
+
ExpiresByType application/javascript "access plus 1 week"
|
|
31
|
+
</IfModule>
|
|
32
|
+
|
|
33
|
+
# Segurança básica
|
|
34
|
+
<IfModule mod_headers.c>
|
|
35
|
+
Header always set X-Content-Type-Options nosniff
|
|
36
|
+
Header always set X-Frame-Options SAMEORIGIN
|
|
37
|
+
Header always set X-XSS-Protection "1; mode=block"
|
|
38
|
+
</IfModule>
|
|
39
|
+
</VirtualHost>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
-- ============================================
|
|
2
|
+
-- MinimalDev - Script de Inicialização
|
|
3
|
+
-- Este script é executado automaticamente
|
|
4
|
+
-- quando o container MySQL é criado
|
|
5
|
+
-- ============================================
|
|
6
|
+
|
|
7
|
+
-- Criar banco de dados principal
|
|
8
|
+
CREATE DATABASE IF NOT EXISTS `minimaldev`
|
|
9
|
+
CHARACTER SET utf8mb4
|
|
10
|
+
COLLATE utf8mb4_unicode_ci;
|
|
11
|
+
|
|
12
|
+
-- Usar o banco de dados
|
|
13
|
+
USE `minimaldev`;
|
|
14
|
+
|
|
15
|
+
-- ============================================
|
|
16
|
+
-- Tabela de exemplo para testes
|
|
17
|
+
-- ============================================
|
|
18
|
+
CREATE TABLE IF NOT EXISTS `users` (
|
|
19
|
+
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
|
20
|
+
`name` VARCHAR(100) NOT NULL,
|
|
21
|
+
`email` VARCHAR(150) NOT NULL UNIQUE,
|
|
22
|
+
`password` VARCHAR(255) NOT NULL,
|
|
23
|
+
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
24
|
+
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
|
25
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
26
|
+
|
|
27
|
+
-- ============================================
|
|
28
|
+
-- Inserir usuários de teste
|
|
29
|
+
-- Senha padrão: password (hash bcrypt)
|
|
30
|
+
-- ============================================
|
|
31
|
+
INSERT INTO `users` (`name`, `email`, `password`) VALUES
|
|
32
|
+
('Admin', 'admin@localhost.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'),
|
|
33
|
+
('Developer', 'dev@localhost.com', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi');
|
|
34
|
+
|
|
35
|
+
-- ============================================
|
|
36
|
+
-- Garantir privilégios ao usuário developer
|
|
37
|
+
-- ============================================
|
|
38
|
+
GRANT ALL PRIVILEGES ON `minimaldev`.* TO 'developer'@'%';
|
|
39
|
+
FLUSH PRIVILEGES;
|
|
40
|
+
|
|
41
|
+
-- Confirmação
|
|
42
|
+
SELECT 'Banco de dados inicializado com sucesso!' AS status;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
[mysqld]
|
|
2
|
+
# ============================================
|
|
3
|
+
# Configurações Gerais
|
|
4
|
+
# ============================================
|
|
5
|
+
character-set-server = utf8mb4
|
|
6
|
+
collation-server = utf8mb4_unicode_ci
|
|
7
|
+
default-time-zone = '-03:00'
|
|
8
|
+
|
|
9
|
+
# ============================================
|
|
10
|
+
# Performance
|
|
11
|
+
# ============================================
|
|
12
|
+
innodb_buffer_pool_size = 256M
|
|
13
|
+
innodb_log_file_size = 64M
|
|
14
|
+
max_connections = 150
|
|
15
|
+
key_buffer_size = 32M
|
|
16
|
+
|
|
17
|
+
# ============================================
|
|
18
|
+
# Log de Queries Lentas
|
|
19
|
+
# ============================================
|
|
20
|
+
slow_query_log = 1
|
|
21
|
+
slow_query_log_file = /var/log/mysql/slow.log
|
|
22
|
+
long_query_time = 2
|
|
23
|
+
|
|
24
|
+
# ============================================
|
|
25
|
+
# Segurança
|
|
26
|
+
# ============================================
|
|
27
|
+
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
|
|
28
|
+
|
|
29
|
+
[mysql]
|
|
30
|
+
default-character-set = utf8mb4
|
|
31
|
+
|
|
32
|
+
[client]
|
|
33
|
+
default-character-set = utf8mb4
|