我已经在互联网上搜索过了,但没有找到任何解决方案,或者也许我搜索的不正确,不知道。
我想知道是否可以通过单个 Docker 镜像在单个 Docker 容器中运行多个网站。
我想要获取的是我的项目存储库的网站路径复制。
例如,假设我有以下存储库分支:
/master
/rc
/develop
/feature
/some-new-change
/another-change
/something-waiting-mr
/fix
/client-urgent-fix
/some-bug
我想要在浏览器上有以下 URL:
https?://path:port/master
https?://path:port/rc
https?://path:port/develop
https?://path:port/feature/some-new-change
https?://path:port/feature/another-change
https?://path:port/feature/something-waiting-mr
https?://path:port/fix/client-urgent-fix
https?://path:port/some-bug
显然,这些只能从私有网络可见,而公共代理将始终指向 /master 端点挂钩。
该项目是一个 Webpack 编译的 Web 应用程序(ReactJS、SASS 等),目标是将应用程序的每个分支版本部署在其自己的服务文件夹中。
当前状态:
在网络环境中,有一台机器运行多个docker容器,每个容器从镜像端口映射到公共服务器端口。
CI+CD 脚本在每个存储库推送时针对选定的分支运行,并将包含 Apache Web Server 的 docker 镜像部署到其容器中。
这样,我在 Apache 服务器的 /var/www 中只有一个唯一的捆绑应用程序,但我试图获得上述解释。
我在网上查到的是在单个容器中发布多个Docker 镜像。
任何想法?
感谢您的时间和回复。
答案1
您不需要使用 Web 内容构建 docker 镜像。您可以拥有一个只包含服务器“机器”的 Web 镜像,该镜像使用绑定安装卷在运行时添加目录(在服务器的适当位置)。因此,您的 CI/CD 只会部署到主机文件系统,并且当前正在运行的容器可以立即将其考虑在内(如果服务器具有内部缓存,则可能必须重新启动容器,但您无需为此重建它)。