问题描述
我在使用Apache 2.4.6和CentOS泊坞窗容器中运行的Web应用程序;这个应用程序反过来会谈其他几个Docker容器如通过泊坞窗链接后端服务和MySQL。我可以连接到应用程序容器在本地使用boot2docker VM,即 http://192.168.59.103:80/
的IP地址。不过,我想是一个子域,即 http://test.mydomain.com
能够访问在本地通过一个域名。原因是该应用程序使用 $ _ SERVER ['HTTP_HOST']
变量进行身份验证请求,并反过来,后端服务使用 HTTP_ORIGIN
头验证从Web应用程序请求从一个有效的子域的到来。因此,在浏览器中测试应用程序时,我需要它来正确地发送这些HTTP标头。我只需要为当地的环境,不部署(专门用于运行针对应用程序的持续集成测试的目的)进行配置。我真的不知道该怎么做来配置我的本地系统(OS X小牛)和CI环境(Ubuntu的12.04),以使域名进行访问。
这是我目前的配置:
的httpd.conf
<虚拟主机*:80>
DocumentRoot的/无功/网络/网站
ServerAlias 172 *
服务器名mydomain.com
UseCanonicalName在 <目录/无功/网络/网站>
有FollowSymLinks
所有的AllowOverride
为了允许,拒绝
所有允许
< /目录>
< /虚拟主机>
这是命令我运行启动Web应用程序容器:
泊坞窗运行-d -p 80:80 -h mydomain.com --name网络--link的mysql:mysql的--link的memcached:--link的memcached服务:服务--link API:基API MYORG / mywebapp:制定
在此设置,我可以成功地在 http://192.168.59.103
导航到应用程序,但因为 HTTP_HOST
是IP,应用程序不解析子域名并不会验证登录。有没有一种办法可以让这么本地请求something.mydomain.com会重定向到泊坞窗容器?请问服务器名称mydomain.com
行有什么目的在Apache的配置,并在 -h mydomain.com
参数在泊坞窗运行
命令?
您可以定义一个容器的主机名和域名,并使用shell脚本来更新/ etc / hosts中为您服务。
在这里您可以找到如何某些内脏:。
有可能创建一个泊坞窗的应用程序,将听取泊坞窗API(启动和停止)和更新共享/ etc / hosts中的主机和客户之间的文件(如一个优雅的,自动化的解决方案)。在红宝石API看一看,例如:的,也许在与bjeanes /鬼主机管理器(github上)。结合
更新:
另一种方法是增加一个桥接网络主机上,给人一种静态的IP地址,如 192.168.33.100
。
在使用其接受的IP地址以及泊坞窗端口转发。在泊坞窗撰写YAML语法是:
The file /etc/hosts
needs to be updated with the IP pointing to domain_url. This way can be added as many bridges having different static IP with only only modification of the /etc/hosts file per docker project.
The last solution looks the most elegant from all.
这篇关于使用主机名的码头工人容器访问Apache服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!