- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Gatsby 构建一个静态网站,我正在使用 Nginx为静态文件提供服务。
我也在设置Docker用于将应用程序部署到生产并使用 Traefik作为 Docker 容器中的反向代理。
Traefik运行在不同的容器上,而 Gatsby应用程序在不同的容器上运行 Nginx一起。
但是,当我在生产中运行应用程序时,出现此错误:
level=error msg="field not found, node: mywebsite" providerName=docker container=web-my-website
server {
listen 3008;
add_header Cache-Control no-cache;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
expires -1;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Dockerfile
# Set base image
FROM node:latest AS builder
# Set working directory
WORKDIR /app
# Copy package.json and install packages
COPY package.json .
RUN npm install
# Copy other project files and build
COPY . ./
RUN npm run build
# Set nginx image
FROM nginx:latest
# Nginx config
RUN rm -rf /etc/nginx/conf.d/default.conf
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
# Static build
COPY --from=builder /app/public /usr/share/nginx/html
# Set working directory
WORKDIR /usr/share/nginx/html
# Start Nginx server
CMD ["/bin/bash", "-c", "nginx -g \"daemon off;\""]
Gatsby 应用程序的 docker-compose.yml
version: "3"
services:
web:
image: my-website
build:
context: .
dockerfile: Dockerfile
expose:
- "3004"
labels:
- traefik.enable=true
- traefik.http.routers.mywebsite.rule=Host(`mywebsite.com`)
- traefik.http.services.educollectwebsite.loadbalancer.server.port=3004
restart: always
volumes:
- .:/app
networks:
default:
external:
name: traefik-proxy
Traefik 的 docker-compose.yml
version: "3"
services:
reverse-proxy:
# The official v2 Traefik docker image
image: traefik:v2.2
# Enables the web UI and tells Traefik to listen to docker
command:
- --api.insecure=true
- --entrypoints.web.address=:80
- --providers.docker=true
- --providers.docker.exposedbydefault=false
ports:
# The HTTP port
- "88:80"
# The Web UI (enabled by --api.insecure=true)
- "8088:8080"
restart: always
volumes:
# So that Traefik can listen to the Docker events
- /var/run/docker.sock:/var/run/docker.sock
networks:
default:
external:
name: traefik-proxy
我似乎无法弄清楚这里的问题是什么。任何形式的帮助将不胜感激。
最佳答案
在与我的直线经理一起工作了几个小时后,我终于能够解决它。
问题是我定义了端口 3008
在 Nginx default.conf 文件,然后定义端口 3004
在 Gatsby 应用程序的 docker-compose.yml 文件。这不允许流量从 Traefik 反向代理进入应用程序。因为两个端口都不一样。
解决方案 1 :
只需定义 3008
的相同端口在 Nginx default.conf 并在 Gatsby 应用程序的 docker-compose.yml 文件修复它:
Nginx 的 defualt.conf
server {
listen 3008;
add_header Cache-Control no-cache;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
expires -1;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Gatsby 应用程序的 docker-compose.yml
version: "3"
services:
web:
image: my-website
build:
context: .
dockerfile: Dockerfile
expose:
- "3004"
labels:
- traefik.enable=true
- traefik.http.routers.mywebsite.rule=Host(`mywebsite.com`)
- traefik.http.services.educollectwebsite.loadbalancer.server.port=3008
restart: always
volumes:
- .:/app
networks:
default:
external:
name: traefik-proxy
解决方案2:
80
在
Nginx default.conf 并在
Gatsby 应用程序的 docker-compose.yml 文件修复它。这在部署静态应用程序时更可取,因为它可以帮助我为应用程序假设一个合理的默认值。
server {
listen 80;
add_header Cache-Control no-cache;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
expires -1;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
Gatsby 应用程序的 docker-compose.yml
version: "3"
services:
web:
image: my-website
build:
context: .
dockerfile: Dockerfile
expose:
- "80"
labels:
- traefik.enable=true
- traefik.http.routers.mywebsite.rule=Host(`mywebsite.com`)
restart: always
volumes:
- .:/app
networks:
default:
external:
name: traefik-proxy
备注 :使用与 Traefik 相同的端口,即应用程序中的端口 80,使对 Traefik 负载均衡器服务的需求无效。
- traefik.http.services.educollectwebsite.loadbalancer.server.port=80
就这样。
关于docker - Traefik:级别=错误消息 =“field not found, node: mywebsite” providerName=docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62678912/
我有一个在 Linux 服务器上运行的 Wordpress 网站。我最近不得不重建我的 Windows PC,所以我试图将网站从 www.mywebsite.co.uk (Linux) 迁移到本地主机
现在我正在使用: RewriteRule (.*)/$ /$1 [R=301,L] 用于从“www.mywebsite.com/page/”或“www.mywebsite.com/page////”重
在我的工作中,我们有各种网页,我的老板认为,这些网页的排名低于应有的排名,因为“mywebsite.org/category/”在搜索引擎中看起来与“mywebsite.org/category/”不
我正在使用 java 和谷歌应用程序引擎构建一个网站。我需要创建像 www.mywebsite.com/the_dark_knight_rises 这样的网址 当用户访问该网址时,将从我的数据库 (m
我的 webapp 在 Tomcat 上运行,Tomcat 在 EC2 实例上运行。我已正确设置实例的入站规则。 当我输入 :8080它适用于我的浏览器。对于 它不加载。相反,我收到以下错误消息: T
我在 wordpress 中开发了一个网站。但现在我面临一个错误: require(public_html/mywebsite/wp-includes/post.php):failed to open
我在谷歌云实例中有我的网站(HTML 文件)。 (例如:www.mywbsite.com) 要启动博客,在另一个实例上使用谷歌云一键安装安装了 Wordpress,它工作正常,但要访问它,我使用了一个
现在要明确的是,我不希望 javascript 在页面加载后只更改 url。我希望能够在多功能栏中输入诸如“blog.mywebsite.com”之类的内容,并实际上让它通过“store.steamp
我想将所有流量重定向到 http://www.mywebsite.com 当有人访问https://www.mywebsite.com它将转到http://www.mywebsite.com当有人访问
我正在尝试制作一个网站,当用户可以使用 html2canvas 进行屏幕截图时,然后在屏幕截图完成后,用户可以将其保存到该网站。我试图遵循这个tutorial:但我失败了。它给了我这个错误: Fata
我为工作编写的一些代码不适合公开。所以,我喜欢在公司的服务器内运行。从私有(private)服务器使用“go get”撤回图书馆的最简单方法是什么。在 Apache 网站上拥有库的最简单方法是什么?
我有一个使用 Azure SDK 2.3 的 Azure Web 角色。我的网站项目网站有 web.config,它在构建过程中被正确复制到 bin/debug/website.dll.config。
我有一个使用 Azure SDK 2.3 的 Azure Web 角色。我的网站项目网站有 web.config,它在构建过程中被正确复制到 bin/debug/website.dll.config。
我在 Azure 上创建了一个网站,并将其与自定义域名 (CNET) 链接。 现在,当我在 Azure 面板上查看网站配置上的域时,我会看到 www.mywebsite.com 和默认的 mywebs
我已经尽了最大的努力来完成这项工作,但它不起作用。我在这里阅读了无数的答案,但这是徒劳的。 我安装了Python 2.7和Django 1.6.5。我创建了一个 virtualenv, env ,我也
我的网站之一可以使用除 Firefox 4 beta 版本以外的所有其他浏览器。Firefox 4 在记录 css、图像、js 文件时遇到问题。我检查了 HTTPwatcher,请求没有发送到服务器。
我正在为我的网站使用 Google 搜索 API。除一个搜索查询外,所有搜索查询一切正常!包含 site:noviniran.com 的查询不返回任何结果!!!!我不知道为什么!此查询适用于普通 Go
我正在使用 Gatsby 构建一个静态网站,我正在使用 Nginx为静态文件提供服务。 我也在设置Docker用于将应用程序部署到生产并使用 Traefik作为 Docker 容器中的反向代理。 Tr
当我尝试在一个区域的 Controller 中打开一个 View 时,我得到了上述信息。 Ninject 设置如下: public class NinjectControllerFactory : D
假设我有一个网站 MyWebsite,您可以在其中为号召性用语框构建内容,该框应显示在另一个网站 WebsiteA 以及选择我们解决方案的更多网站上而不使用 iframe。 如何使用 jQuery 或
我是一名优秀的程序员,十分优秀!