现代化很少会一次性替换所有服务。本挑战型项目要求你运行一套本地混合栈:容器化 Web 试点、主机数据库、Nginx 网关和 Apache 遗留端点,每项服务都有独立端口和配置模型。
你将把自定义内容绑定挂载到 Docker,把 MariaDB 账户权限限定到单个数据库,把流量代理到预置内部应用,并通过 Apache .htaccess 重定向保留旧 URL。最终练习重点是在不发生端口冲突的情况下协调容器与主机服务。
你将学到什么
- 运行名为
web-pilot的nginx:alpine容器,配置绑定挂载和8080:80端口映射 - 安装并启动 MariaDB,创建
globaltech_data,并授权app_user@localhost访问该数据库 - 配置主机 Nginx 在端口
80将/代理到预置服务127.0.0.1:5000 - 验证 Nginx 配置、重新加载服务,并通过公共端点确认后端内容
- 将 Apache 移到端口
8081,在/legacy提供旧内容并允许.htaccess覆盖 - 使用 Apache 重写规则实现并验证从
/old到/legacy的301或302重定向
本课程适合谁
本项目适合准备通过结果导向挑战整合 Docker、MariaDB、Nginx 和 Apache 的 Linux 与 DevOps 学习者。
前置要求: 熟悉 Docker 运行参数与绑定挂载、Linux 软件包和服务管理、基础 SQL 授权、Web 服务器配置、端口及 curl;这是考核型项目。
学习环境: 可通过浏览器访问的 Linux 主机,配有 sudo、Docker、APT、MariaDB、Nginx、Apache、端口 5000 上的预置后端和本地网络访问;无需云账户。
常见问题
这里的“混合基础设施”是指混合云或多节点部署吗?
不是。项目在一台实验主机上组合一个 Docker 工作负载和主机安装的数据库、Web 服务,不会配置云资源或多台服务器。
MariaDB 数据库会连接到 Web 应用吗?
不会。你会独立验证数据库、本地用户、密码和限定于该数据库的权限;应用 Schema、表、迁移和客户端集成不在任务范围内。
我需要构建 Nginx 代理后的后端吗?
不需要。模拟内部应用已运行在 127.0.0.1:5000;你的职责是配置端口 80 上的 Nginx,使 curl http://localhost 能访问它。
为什么 Nginx 和 Apache 能同时运行?
它们监听不同主机端口:Nginx 使用 80,Apache 使用 8081,Docker 试点使用 8080。Apache 挑战还要求 /old 重定向必须定义在 .htaccess 中,而不只是主配置文件。





