如何更改nginx-proxy设置

我正在使用这个lib:

https://github.com/jwilder/nginx-proxy

这是我的docker-compose文件:

version: '2' services: nginx-proxy: image: jwilder/nginx-proxy container_name: nginx-proxy ports: - "80:80" volumes: - /var/run/docker.sock:/tmp/docker.sock:ro whoami: image: jwilder/whoami environment: - VIRTUAL_HOST=whoami.local service1: image: mynode:1.4 build: . volumes: - .:/app restart: always environment: - VIRTUAL_HOST=service1.local service2: image: mynodeother:1.3 build: . volumes: - .:/app restart: always environment: - VIRTUAL_HOST=service2.local 

我添加了2个新的节点服务…

我可以这样做: curl -H "Host: service2.local" localhost并从service2获得响应….

问题是我从中得到什么好处? 我怎样才能在80端口上运行service1?

这里是Dockerfile的Dockerfile:

 FROM node:6.9.4 # Create app directory RUN mkdir -p /usr/src/app WORKDIR /usr/src/app RUN npm install nodemon -g # Install app dependencies COPY package.json /usr/src/app/ RUN npm install # Bundle app source COPY . /usr/src/app EXPOSE 8080 CMD [ "npm", "start" ] 

这很简单,只需要在80端口运行所有服务,然后在Dockerfile中显示该端口,就是这样。

只要你不把这个端口发布给你的主机(就像你用nginx做的那样),就没有问题了。

这样做的好处是,你所有的服务可以通过使用主机名到达另一个服务器,这意味着,容器的名字,这是很酷的,因为你不需要知道分配给每个容器的当前IP地址。

所以如果你用bashsh进入其中一个服务,你应该可以通过使用主机名来ping其他服务:

Inside service1: ping service2

关于nginx-proxy的好处在于,它会检测您是否缩放了其中一个服务,并自动更新nginxconfiguration:

docker-compose scale service1=3

我将启动其他2个service1实例,无论您有100个,其余的服务都可以通过使用hostname:service1来访问。

因此,您可以平衡负载,而不必担心同一服务的每个实例的IP地址。