我試圖在同一個Docker容器和端口上運行兩個不同的域。同一個碼頭集裝箱上的多個虛擬主機
Docker容器運行CentOS。 docker-compose.yml
看起來像這樣:
web:
image: fab/centos
ports:
- "80:80"
volumes:
- ./src/httpd.conf:/etc/httpd/conf/httpd.conf
- ./src:/var/www/html
- ./src/hosts:/etc/hosts
environment:
- VIRTUAL_HOST=dummy.dev,tests.dev
我也是在主機上宣佈的/etc/hosts
內都.dev域名(OS X.)
這已經有一段時間,因爲我配置了虛擬主機。我的理解是我只需要聲明它們,並且Apache會根據請求的HTTP HOST自動提供正確的文件。
這是我有,加在httpd.conf
末:
<VirtualHost *:80> # first host = default host
DocumentRoot /var/www/html/default
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/dummy
ServerName dummy.dev
ServerAdmin [email protected]
ErrorLog logs/dummy.dev-error_log
CustomLog logs/dummy.dev-access_log common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/html/tests
ServerName tests.dev
ServerAdmin [email protected]
ErrorLog logs/tests.dev-error_log
CustomLog logs/tests.dev-access_log common
</VirtualHost>
然而,在實踐中,無論是參觀還是dummy.dev實際上tests.dev服務/var/www/html/default
。這好像Apache沒有意識到哪個主機被調用(雖然PHP中的$_SERVER
的轉儲確實顯示了預期的HTTP_HOST
值,即:127.0.0.1,dummy.dev或tests.dev,具體取決於我訪問的URL。 )
我錯過了什麼?
這是我不清楚這是否是一個Apache問題或碼頭工人之一。 (請注意,這是一個與如何在同一個域中以不同端口託管多個應用程序不同的問題,在我的情況下,我確實希望虛擬主機全部位於/位於同一個應用程序/端口/容器中。 )