我正在尝试使用nginx作为docker容器中的代理服务器运行nuxtjs应用程序。所以,我有2个容器:nginx和nuxt
这是我构建nuxt应用程序的方式
FROM node:11.15
ENV APP_ROOT /src
RUN mkdir ${APP_ROOT}
WORKDIR ${APP_ROOT}
ADD . ${APP_ROOT}
RUN npm install
RUN npm run build
ENV host 0.0.0.0
接下来是nginx配置
server {
listen 80;
server_name dev.iceik.com.ua;
location / {
proxy_pass http://nuxt:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
我也尝试过这种nginx配置
upstream nuxt {
server nuxt:3000;
}
server {
listen 80;
server_name dev.iceik.com.ua;
location / {
proxy_pass http://nuxt;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
最后是我的docker-compose文件
version: "3"
services:
nuxt:
build: ./app/
container_name: nuxt
restart: always
ports:
- "3000:3000"
command:
"npm run start"
nginx:
image: nginx:1.17
container_name: nginx
ports:
- "80:80"
volumes:
- ./nginx:/etc/nginx/conf.d
depends_on:
- nuxt
因此,预期结果是我可以访问我的nuxt应用程序。 但是我收到502 Bad Gateway
您有什么想法,为什么nginx不公开我的nuxt应用程序?
谢谢您的任何建议!
答案 0 :(得分:1)
Nodejs暴露于localhost:3000
而非0.0.0.0:3000
请更正它。会工作
答案 1 :(得分:0)
如果您的容器需要互相交谈,总是将它们放入网络中,这是很好的选择,另一种方法是使用主机网络(仅适用于linux)。尝试在docker-compose.yml
下面,他们应该能够通过容器名称相互交谈。
version: "3"
services:
nuxt:
build: ./app/
container_name: nuxt
restart: always
ports:
- "3000:3000"
command:
"npm run start"
networks:
- my_net
nginx:
image: nginx:1.17
container_name: nginx
ports:
- "80:80"
volumes:
- ./nginx:/etc/nginx/conf.d
depends_on:
- nuxt
networks:
- my_net
networks:
my_net:
driver: "bridge"