【问题标题】:How to change nginx-proxy settings如何更改 nginx-proxy 设置
【发布时间】:2017-09-14 23:25:48
【问题描述】:

我正在使用这个库:

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?

这是来自 service1 的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" ]

【问题讨论】:

    标签: nginx docker proxy docker-compose jwilder-nginx-proxy


    【解决方案1】:

    这很简单,您只需在 80 端口中运行所有服务并在 Dockerfile 中公开该端口即可。

    只要您不将该端口发布到您的主机(就像您使用 nginx 一样),就没有问题。

    优点是你拥有的每一项服务都可以通过使用主机名到达另一个服务,这意味着容器的名称,这很酷,因为你不需要知道分配给每个容器的当前 IP 地址。

    因此,如果您使用 bashsh 进入其中一项服务,您应该能够使用主机名 ping 其他服务:

    内部服务1: ping service2

    nginx-proxy 的好处在于,它会检测您是否扩展了一项服务,并且会自动更新 nginx 配置:

    docker-compose scale service1=3

    我将启动您的 service1 的另外 2 个实例,无论您是否有 100 个,其余服务都可以使用主机名访问它们:service1。

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

    【讨论】:

    • 如果我像这样登录到容器:docker run -it mynode:1.0 /bin/bash 并尝试 ping 其他容器由于某种原因我得到ping: unknown host 你知道有什么问题吗?
    • 尝试使用服务名称和 VIRTUAL_HOST。如果他们在同一个网络中,它应该可以工作。还要确保您拥有实施嵌入式 dns 服务器的最新 docker 版本。
    • 当我使用 http req 从另一个服务调用服务时,它可以工作,但现在何时像上面那样手动进行......我该如何解决路由问题,例如,如果我有 2 个具有不同路由的服务是它可以在同一主机上自动绑定该路由吗?
    • 我没看懂你的最后一个问题,我想那是另一个问题,开一个新问题!.. 这个问题似乎已经回答了。 ;)
    • 是的,我在这里详细解释了:stackoverflow.com/questions/43492974/…
    猜你喜欢
    • 2021-04-24
    • 2018-04-29
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 2016-03-10
    • 2017-03-19
    • 1970-01-01
    • 2018-02-28
    相关资源
    最近更新 更多