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.
2.9 KiB
2.9 KiB
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
-
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
-
Web Server: After the check, Apache starts normally and serves content from the web directory
-
Persistence: If you mount a volume with existing content, the default page won't be copied
Usage
Basic Usage
# 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)
# 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
# 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