docker - 可以将 Apache 虚拟主机设置为重定向到 Docker 容器吗?
问题描述
我有一个运行 Apache 的 Docker 容器,该容器当前正在监听端口 80。
我试图在同一台服务器上运行另一个网站,这次本机使用 Apache,也监听端口 80。
问题是我不能让两个应用程序都监听同一个端口(Docker 和 Apache)。
我可以设置服务器的本机 Apache 安装以在内部将基于域名的某些请求重定向到我的 Docker 容器吗?例如,Apache 将侦听端口 80,并且请求mycontainer.com
将在内部传输到9999
Docker 将侦听的端口。
解决方案
是的,你可以这么做。我第一次想测试时,我就是这样做的,而且没有问题。
我们有一个运行到端口 80 的 Apache 容器,让我们调用另一个类似的域mycontainer.com
,我们也希望在端口 80 上可以访问,但我们不能。
不管你如何运行这些容器,我的意思是docker run
or docker-compose
,但重点是它们应该在同一个network中。
创建一个名为my_network
:
docker network create my_network
我称第一个 Apache 为main,后者为the_name one。
所以现在让我们在同一个网络中运行它们:
docker run --name main --network my_network httpd
docker run --name the_name --network my_network another_image
现在您可以执行到the_name
容器中并在 Apache conf 路径中创建一个domain.conf
包含以下内容的文件:
<VirtualHost *:80>
ServerName mycontainer.com
ProxyPreserveHost On
ProxyPass "/" "http://the_name:9999/"
ProxyPassReverse "/" "http://the_name:9999/"
ProxyRequests Off
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
推荐阅读
- git - 运行基本 git 命令(如“git fetch”)时出现 kex_exchange_identification 错误
- crystal-reports - 使用参数或其他东西来改进我正在做的事情的最佳方法是什么?
- javascript - 在 React 表中单击时访问“更多详细信息”
- asp.net-core - 如何在 Razor 页面中发布表格单元格值
- amazon-web-services - AWS QuickSight - 两个文件的联合
- sequence - 找到重复序列和
- reactjs - 我如何使用 useState、React 跟踪 localStorage
- python - 如何应用 Numpy Vectorize 而不是应用函数
- routes - 使用 next.js SSR 路由会在显示页面之前呈现空白屏幕
- vue.js - Vue 2 输入未使用前导 zeors 更新