All checks were successful
WHP Default Container / Build-and-Push (push) Successful in 11s
- Added Dockerfile with Apache base image - Created beautiful web hosting landing page (index.html) - Added startup script to check for content and copy default page - Set up Gitea workflow for automatic builds - Updated README with comprehensive documentation The container automatically provides a professional landing page when the web directory is empty, focusing on web hosting features and guiding users to configure their site through the Web Hosting Panel.
94 lines
2.9 KiB
Markdown
94 lines
2.9 KiB
Markdown
# Web Server Container with Auto-Landing Page
|
|
|
|
This Docker container provides a web server that automatically checks for content in the web directory and provides a beautiful default landing page if none exists.
|
|
|
|
## Features
|
|
|
|
- **Auto-Detection**: Checks if the web directory (`/usr/local/apache2/htdocs`) is empty on startup
|
|
- **Default Landing Page**: Automatically copies a modern, responsive landing page if no content exists
|
|
- **Non-Destructive**: Only copies the default page if the directory is truly empty
|
|
- **Apache Web Server**: Based on the official `httpd:alpine` image for lightweight performance
|
|
|
|
## How It Works
|
|
|
|
1. **Startup Check**: When the container starts, it runs a startup script that:
|
|
- Checks if the web directory exists (creates it if needed)
|
|
- Determines if the directory is empty (ignoring hidden files)
|
|
- Copies the default `index.html` if no content is found
|
|
|
|
2. **Web Server**: After the check, Apache starts normally and serves content from the web directory
|
|
|
|
3. **Persistence**: If you mount a volume with existing content, the default page won't be copied
|
|
|
|
## Usage
|
|
|
|
### Basic Usage
|
|
```bash
|
|
# Build the container
|
|
docker build -t my-web-server .
|
|
|
|
# Run the container
|
|
docker run -p 80:80 my-web-server
|
|
```
|
|
|
|
### With Volume Mount (for persistent content)
|
|
```bash
|
|
# Mount a local directory to preserve your content
|
|
docker run -p 80:80 -v /path/to/your/web/content:/usr/local/apache2/htdocs my-web-server
|
|
```
|
|
|
|
### With Custom Port
|
|
```bash
|
|
# Run on a different port
|
|
docker run -p 8080:80 my-web-server
|
|
```
|
|
|
|
## File Structure
|
|
|
|
```
|
|
.
|
|
├── Dockerfile # Container definition
|
|
├── index.html # Default landing page (beautiful, responsive)
|
|
├── scripts/
|
|
│ └── startup.sh # Startup script that handles the logic
|
|
└── README.md # This file
|
|
```
|
|
|
|
## Customization
|
|
|
|
### Modifying the Default Landing Page
|
|
Edit the `index.html` file before building the container. The page includes:
|
|
- Modern gradient background
|
|
- Responsive design
|
|
- Feature cards
|
|
- Smooth animations
|
|
- Mobile-friendly layout
|
|
|
|
### Modifying the Startup Logic
|
|
Edit `scripts/startup.sh` to change:
|
|
- Web directory path
|
|
- File detection logic
|
|
- Additional initialization steps
|
|
|
|
## Container Details
|
|
|
|
- **Base Image**: `httpd:alpine` (lightweight Apache server)
|
|
- **Web Directory**: `/usr/local/apache2/htdocs`
|
|
- **Default Port**: 80
|
|
- **Entrypoint**: `/startup.sh`
|
|
|
|
## Troubleshooting
|
|
|
|
### Container Won't Start
|
|
- Check that `scripts/startup.sh` is executable: `chmod +x scripts/startup.sh`
|
|
- Verify the Dockerfile syntax: `docker build -t test .`
|
|
|
|
### Default Page Not Appearing
|
|
- Check container logs: `docker logs <container_name>`
|
|
- Verify the web directory is actually empty
|
|
- Ensure no volume is mounted that contains files
|
|
|
|
### Permission Issues
|
|
- The container runs as the default Apache user
|
|
- If mounting volumes, ensure proper permissions: `chmod 755 /path/to/web/content`
|