【发布时间】:2019-12-29 15:00:26
【问题描述】:
我正在尝试使用 docker-compose、jwilder / nginx-proxy 和letsencrypt 伴侣构建一个Web 应用程序,但是当我尝试它时,nginx 会抛出一个503 错误。
“503 服务暂时不可用”
我的docker-compose文件如下
version: '2'
services:
nginx-proxy:
image: jwilder/nginx-proxy:alpine
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- /etc/nginx/certs
- /etc/nginx/vhost.d
- /usr/share/nginx/html
- /var/run/docker.sock:/tmp/docker.sock:ro
labels:
- com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy
letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
restart: always
environment:
- NGINX_PROXY_CONTAINER=nginx-proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes_from:
- nginx-proxy:rw
www:
build:
context: .
dockerfile: Dockerfile
restart: always
expose:
- "80"
environment:
- VIRTUAL_HOST=example.com, www.example.com
- LETSENCRYPT_HOST=example.com, www.example.com
- LETSENCRYPT_EMAIL=contact@example.com
我的 web 应用是用 react 构建的,我制作了这个 Dockerfile 来构建容器镜像:
FROM node:10-alpine as build
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . .
RUN npm run build
FROM nginx:1.14-alpine
COPY --from=build /usr/src/app/build/ /usr/share/nginx/html
COPY www/nginx.config /etc/nginx/conf.d/default.conf
这是这张图片使用的 nginx.config:
server {
server_name example.com www.example.com;
listen 80 reuseport default;
sendfile on;
default_type application/octet-stream;
gzip on;
gzip_http_version 1.1;
gzip_disable "MSIE [1-6].";
gzip_min_length 1100;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;
gzip_comp_level 9;
root /usr/share/nginx/html;
location / {
try_files $uri $uri/ /index.html =404;
}
}
网络应用程序图像工作正常,如果我只运行它,我可以打开它。问题出在 nginx-proxy 和伴随容器上,也许 nginx-proxy 找不到 www 容器?
有人可以帮忙吗?
【问题讨论】:
-
您如何访问您的网络应用程序?根据您的撰写文件,您应该使用在您的
VIRTUAL_HOST变量中指定的example.com访问它。您可能应该将另一个域添加到指向您的本地主机的该变量 - 您可以使用任何东西.lvh.me -
我在我的计算机中使用本地主机访问我的网络,我尝试在我的服务器中使用域,两者的错误是相同的。我对 nuxt 项目使用相同的设置,唯一的区别是 nuxt 项目在端口 3000 上使用节点环境运行,而此 Web 使用 nginx 在端口 80 上提供静态文件
标签: docker nginx jwilder-nginx-proxy