当前位置: 首页 > 面试题库 >

我的网站运行在Docker容器中,如何实现虚拟主机?

单于楚
2023-03-14
问题内容

我在vps中分别在两个docker容器中运行两个网站。例如www.myblog.com和www.mybusiness.com

如何在vps中实现virtualhost,以便两个网站都可以使用端口80。

我在其他地方问了这个问题,建议您看看:https :
//github.com/hipache/hipache和https://www.tutum.co/
他们看起来有些弯曲。我试图找到是否有一个简单的方法来实现这一目标。谢谢!

另外,忘了提一下我的vps是Ubuntu 14.04机器。


问题答案:

看一下jwilder / nginx-proxy项目。

使用docker-gen的Docker容器的自动nginx代理

这是代理Docker容器的最简单方法。您无需在每次重新启动容器或启动新容器时都编辑代理配置文件。docker-
gen
会自动为您完成所有操作,该生成器会为nginx生成反向代理配置,并在启动和停止容器时重新加载nginx。

用法

要运行它:

$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock \
jwilder/nginx-proxy

然后使用env var VIRTUAL_HOST = subdomain.youdomain.com启动要代理的任何容器

$ docker run -e VIRTUAL_HOST=foo.bar.com  ...

如果您的DNS设置为将foo.bar.com转发到运行nginx-proxy的主机,则该请求将被路由到设置了VIRTUAL_HOST env
var的容器。

多个端口

如果您的容器公开了多个端口,则nginx-proxy将默认使用在端口80上运行的服务。如果需要指定其他端口,则可以将VIRTUAL_PORT env
var设置为选择其他端口。如果您的容器仅公开一个端口,并且设置了VIRTUAL_HOST env var,则将选择该端口。



 类似资料:
  • 我想使用Docker,以便能够运行一个需要PHP5.3的旧应用程序,同时在我的主机服务器上还有我的其他网站,在主机Apache上运行。 所以我有一个网站。com,siteB。com,siteC。com运行在主机上,使用主机Apache/PHP/MySQL服务器,我有siteZ。com,安装在Docker容器中,该容器应使用容器的Apache/PHP,而不是主机MySQL服务器。 这是我想获得的架构

  • 我正在使用一个安装了docker的docker映像,为了运行任务来清理我的kubernetes集群中每个节点上的docker映像数据。我尝试使用Daemonset,因为它将在除master之外的每个节点上运行,但是在docker容器中运行cron被证明是徒劳的。 因此,我尝试使用K8s Cronjob,它定期运行,具有以下属性: 和 我正在运行一个 shell 脚本,该脚本从上述 CronJob

  • 我在本地机器(Mac)上工作,其中有一个名为sqlvm的遗留虚拟机(这意味着我可以通过http://sqlvm:从本地主机访问这个虚拟机)。现在,我在应该连接到vm的同一个本地主机(我的Mac)中设置了几个docker容器(使用docker-compose)。< code>pymysql会引发一个异常: 如何将外部的“sqlvm”公开给内部 Docker 网络? 编辑:我尝试在yml文件中为相关容

  • 本文向大家介绍docker容器中布置静态网站的实现,包括了docker容器中布置静态网站的实现的使用技巧和注意事项,需要的朋友参考一下 服务器布置 这里推荐使用云服务器(阿里云、华为云、腾讯云)可以免费使用几天。在我们买了服务器后会遇到如下问题: 本地电脑ping服务器主机发现ping不通,请求超时 我们需要在管理服务器的界面找到安全组那一栏,然后在安全组出入都要加入icmp这个,建议直接一键添加

  • 我在用“docker外面的docker”和jenkins运行一个容器。我的docker是: 所以所有从“jenkins容器”启动的容器都在主机中运行。 但是,当我试图在需要卷的作业中运行“jenkins容器”中的docker compose时,它采用的是来自主机的路径,而不是jenkins的路径。我是说,当我和docker合作时 它安装在主机的/var/jenkins_home/workspace

  • nginx安装好之后一般会在/etc/nginx/目录下有nginx.conf文件和conf.d目录,这其实已经帮我们预留了虚拟主机要准备的内容。 看下nginx.conf文件,里面有这样一行: include /etc/nginx/conf.d/*.conf; 那么也就是说ngixn启动都会自动加载conf.d目录下以.conf结尾的所有配置文件 ok,我们直接干掉nginx.conf里面se