基本上我试图将我的节点应用程序设置为由我的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)。
由于