![](/img/trans.png)
[英]How to launch existing Wordpress app image with Docker not at default 80 port?
[英]Is it possible with docker to run more than one app on port 80 on the same computer?
我的想法是這樣。 我什至不需要碼頭工人來解決這個問題。 也許,我可以將nginx作為運行在端口80(Web應用程序的默認端口)上的反向代理運行,並使用不同的編程堆棧將它們定向到不同的應用程序。 換句話說,是Java EE服務器,Node.js服務器,Django應用程序和一些PHP應用程序。 在這種情況下,nginx會將請求提供給適當的應用程序。 那可能嗎?
第二種情況是將不同的IP地址附加到docker映像,以便每個IP地址可以在端口80(默認端口)上運行不同的應用程序。
如果這不起作用,我想我想為要在端口80上服務的每個環境都需要一個不同的VPS服務器。我既有一個可以為低流量站點提供服務的Linux開發服務器,又要每月購買VPS托管。 我希望避免為每個堆棧購買單獨的vps服務器帳戶,例如Java EE,Node.js,帶有Gunicorn的Python / Django和PHP應用程序。
預先感謝您的任何幫助/建議,布魯斯
您可以使用建議的兩種方法:
使用NGINX作為反向代理
在這種情況下,方法是只為每個Docker實例配置不同的server_name條目,然后從那里對Docker實例進行反向代理,例如:
server {
listen 80;
server_name your-server-name.com;
location / {
proxy_pass http://127.0.0.1:8082;
include /etc/nginx/proxy_params;
}
}
在前面的示例中,8082將是您的Docker實例的端口。
映射到不同的IP地址
如果需要,可以使用-p參數將docker端口轉發到特定IP。 確實,在啟動docker實例時,請使用以下命令:
-p IP:host_port:container_port or -p IP::port
用於為一個特定綁定設置外部接口
這在某種程度上取決於您將要處理Web服務的方式。 如果您有可能為它們設置單獨的子域,甚至URL前綴,那么您就已經涵蓋了NGINX-正如您已經猜到的那樣。 您正在尋找的配置選項是proxy_pass-可能與通過server_name指令為服務設置不同的子域結合使用。
假設您已經在本地主機上安裝了NGINX,在端口9000上的同一框中運行了一個django應用程序,並在端口6000上的192.168.0.1上安裝了Java EE服務器,就可以了。 像這樣: https : //gist.github.com/dreizehnelf/f92b23dea5245a3c322cdcea4e1cf362
(對不起,無法直接發布配置,因為stackoverflow將其中的所有http://東西都視為鏈接-而且我沒有足夠的聲譽點來發布兩個以上。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.