使用nginx proxy + dockergen在主机端口80上运行节点服务器时出现问题?

时间:2016-04-24 13:28:17

标签: node.js nginx docker docker-compose

基本上我试图将我的节点应用程序设置为由我的docker机器的http://192.168.99.100/上的nginx服务,而不是绕过nginx并通过将端口7777发布到主机来执行类似http://192.168.99.100:7777/的操作。< / p>

我目前正在尝试在我的泊坞机的根目录http://192.168.99.100/上提供我的frontend节点应用容器。我正在使用dockergen和nginx(单独的容器)来自动生成它。我的从Dockerfile构建的节点应用程序在以下地址和端口npm run dev:no-debug运行localhost:7777

我有以下撰写文件。

version: '2'

services:
  frontend:
    build:
      context: ./frontend
    volumes:
      - ./frontend:/usr/src/app
      - /usr/src/app/node_modules
    expose:
      - "7777"
    environment:
      - "PORT=7777"
      - "VIRTUAL_HOST=192.169.99.100"
  nginx_proxy:
    image: nginx
    container_name: nginx_proxy
    ports:
      - "80:80"
      - "443:443"
    links:
      - frontend
    volumes:
      - /tmp/nginx:/etc/nginx/conf.d
      - ./nginx/certs:/etc/nginx/certs
  dockergen:
    image: jwilder/docker-gen
    container_name: dockergen
    volumes_from:
      - nginx_proxy
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro
      - ./dockergen/templates:/etc/docker-gen/templates
    entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx_proxy -watch -only-exposed /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf

容器启动正常,工作正常,没有错误。

 Name                   Command               State                    Ports
--------------------------------------------------------------------------------------------------
cms_frontend_1   npm run dev:no-debug             Up      7777/tcp
dockergen        /usr/local/bin/docker-gen  ...   Up
nginx_proxy      nginx -g daemon off;             Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp

使用我当前设置生成的default.conf nginx文件包含:

upstream 192.169.99.100 {
      # cms_frontend_1
      server cms_frontend_1:7777;
}
server {
        server_name 192.169.99.100;
        listen 80 ;
        access_log /var/log/nginx/access.log vhost;
        location / {
                proxy_pass http://192.169.99.100;
        }
}

http://192.168.99.100/时,我得到了503.

我仍然对网络世界很陌生但是从上面的代码片段中获取192.169.99.100的请求时,nginx然后使用对应于proxy_pass地址的上游块,然后将该请求传递到该服务器,即{{ 1}}?

由此我猜测问题是cms_frontend_1:7777与服务器正在运行的cms_frontend_1:7777不对应。如果我将以下内容添加到localhost:7777服务容器,我可以在frontend访问我的应用。然而,这违背了让nginx代理请求的目的。

http://192.168.99.100:7777

所以我的问题是这是一个不正确的配置还是我犯了一个错误/误解了一些概念是如何工作的?此外,我希望尽可能保持动态,所以说如果我想部署到aws,则不需要在整个地方重新配置(因此我尝试使用dockergen)。

由于

0 个答案:

没有答案