如何更改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地址。
所以如果你用bash
或sh
进入其中一个服务,你应该可以通过使用主机名来ping其他服务:
Inside service1: ping service2
关于nginx-proxy
的好处在于,它会检测您是否缩放了其中一个服务,并自动更新nginxconfiguration:
docker-compose scale service1=3
我将启动其他2个service1实例,无论您有100个,其余的服务都可以通过使用hostname:service1来访问。
因此,您可以平衡负载,而不必担心同一服务的每个实例的IP地址。
- 如何将我的本地泊坞窗图像导出到另一台计算机上的tar和负载
- 我应该给tomcat通过源代码Docker卷连接的redis容器的ip地址
- 使用docker来编写一个远程映像,使用本地代码库进行*开发*
- 如何在js脚本中读取docker环境variables?
- docker-compose错误,当我运行包
- 在使用docker命令创build并提交更改后无法看到文件
- 使用“allow”指令将对nginx服务器位置的访问限制到特定的Docker容器
- 服务“networking”未能build立:lstat apache / sites-enabled / 000-default.conf:没有这样的文件或目录
- 在开发人员环境中,在Docker容器上运行子域的简单方法