91 lines
2.5 KiB
Markdown
91 lines
2.5 KiB
Markdown
# Lightweight LAMP Stack with Docker
|
|
|
|
This repository contains a lightweight LAMP (Linux, Apache, MySQL, PHP) stack using Docker containers.
|
|
|
|
## Features
|
|
|
|
- **Apache 2.4** (Alpine-based) - Web server with support for virtual hosts
|
|
- **PHP 8.4** (FPM Alpine-based) - Latest PHP version
|
|
- **MySQL 8.0** - Relational database
|
|
- **Adminer** - Lightweight database management tool (alternative to phpMyAdmin)
|
|
- **Virtual Host Support** - Easy to add new virtual hosts
|
|
- **Optimized Images** - Using Alpine Linux for minimal footprint
|
|
|
|
## Directory Structure
|
|
|
|
```
|
|
Docker-Lamp/
|
|
├── apache/ # Apache configuration and Dockerfile
|
|
├── php/ # PHP configuration and Dockerfile
|
|
├── mysql/ # MySQL configuration and Dockerfile
|
|
├── adminer/ # Adminer configuration and Dockerfile
|
|
├── html/ # Web root directory (mounted to containers)
|
|
├── docker-compose.yml # Docker Compose configuration
|
|
└── README.md # This file
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
1. Clone this repository
|
|
2. Navigate to the project directory
|
|
3. Start the stack:
|
|
|
|
```bash
|
|
docker-compose up -d
|
|
```
|
|
|
|
4. Access the services:
|
|
- Web server: http://localhost:32000
|
|
- Adminer (MySQL GUI): http://localhost:32001
|
|
- PHP Info page: http://localhost:32000/index.php
|
|
|
|
## Configuration
|
|
|
|
### Apache Virtual Hosts
|
|
|
|
To add a new virtual host:
|
|
1. Create a new `.conf` file in `apache/vhosts/`
|
|
2. Configure your virtual host settings
|
|
3. Restart Apache: `docker-compose restart apache`
|
|
|
|
Example virtual host configuration is provided in `apache/vhosts/example.conf`
|
|
|
|
### Environment Variables
|
|
|
|
MySQL credentials are configured in `docker-compose.yml`:
|
|
- Database: `lamp_db`
|
|
- Username: `lamp_user`
|
|
- Password: `lamp_password`
|
|
- Root Password: `root_password`
|
|
|
|
Adminer uses these same credentials by default.
|
|
|
|
## Customization
|
|
|
|
### Changing PHP Version
|
|
Modify the PHP Dockerfile to use a different PHP version tag.
|
|
|
|
### Adding PHP Extensions
|
|
Edit the PHP Dockerfile to install additional extensions using `docker-php-ext-install`.
|
|
|
|
### Persistent Data
|
|
MySQL data is persisted in a Docker volume named `mysql-data`.
|
|
|
|
## Stopping the Stack
|
|
|
|
```bash
|
|
docker-compose down
|
|
```
|
|
|
|
To remove volumes as well:
|
|
|
|
```bash
|
|
docker-compose down -v
|
|
```
|
|
|
|
## Notes
|
|
|
|
- All images are based on Alpine Linux for minimal size
|
|
- Apache is configured to allow `.htaccess` overrides
|
|
- PHP-FPM communicates with Apache via the shared volume
|
|
- Adminer provides a clean, lightweight interface for database management |