Modernization rarely replaces every service at once. This challenge-based project asks you to operate a mixed local stack: a containerized web pilot, a host database, an Nginx gateway, and an Apache legacy endpoint, each with a distinct port and configuration model.
You will bind-mount custom content into Docker, scope a MariaDB account to one database, proxy traffic to a prepared internal application, and preserve an old URL through an Apache .htaccess redirect. The result is a practical exercise in coordinating containerized and host-based services without port conflicts.
What You Will Learn
- Run an
nginx:alpinecontainer namedweb-pilotwith a bind mount and8080:80port mapping - Install and start MariaDB, create
globaltech_data, and grantapp_user@localhostaccess to that database - Configure host Nginx on port
80to proxy/to a prepared service at127.0.0.1:5000 - Validate Nginx configuration, reload the service, and confirm backend content through the public endpoint
- Move Apache to port
8081, serve legacy content under/legacy, and allow.htaccessoverrides - Implement and verify a
301or302redirect from/oldto/legacyusing Apache rewrite rules
Who This Course Is For
This project is for Linux and DevOps learners ready to integrate Docker, MariaDB, Nginx, and Apache through outcome-driven challenges.
Prerequisites: Familiarity with Docker run options and bind mounts, Linux package and service management, basic SQL grants, web-server configuration, ports, and curl; this is an assessment-style project.
Learning environment: A browser-accessible Linux host with sudo, Docker, APT, MariaDB, Nginx, Apache, a prepared backend on port 5000, and local network access; no cloud account is required.
Frequently Asked Questions
Does “hybrid infrastructure” mean a hybrid-cloud or multi-node deployment here?
No. The project combines one Docker workload with host-installed database and web-server services on a single lab machine. It does not provision cloud resources or multiple servers.
Is the MariaDB database connected to the web applications?
No. You independently verify the database, local user, password, and database-scoped privileges. Application schemas, tables, migrations, and client integration are outside the task.
Do I build the backend behind the Nginx proxy?
No. A simulated internal application is already available at 127.0.0.1:5000; your responsibility is to configure Nginx on port 80 so curl http://localhost reaches it.
Why can Nginx and Apache run together?
They listen on different host ports: Nginx uses 80, Apache uses 8081, and the Docker pilot uses 8080. The Apache challenge also requires the /old redirect to be defined in .htaccess, not only in the main server configuration.





