Nginx服务器未使用Gatsbyjs默认Docker映像运行

Nginx服务器未使用Gatsbyjs默认Docker映像运行,docker,nginx,docker-compose,gatsby,Docker,Nginx,Docker Compose,Gatsby,我有一个正在工作的gatsbyjs项目,它不是从Docker的官方形象运行的 这是Dockerfile: FROM gatsbyjs/gatsby:latest ADD public/ /pub (编译后的网站位于public/,我已经确认index.html正确呈现了网站) 我还尝试了官方的Dockerfile,但没有成功: FROM gatsbyjs/gatsby:onbuild 我正在从docker compose运行此操作,如下所示: version: '3' services:

我有一个正在工作的
gatsbyjs
项目,它不是从Docker的官方形象运行的

这是
Dockerfile

FROM gatsbyjs/gatsby:latest
ADD public/ /pub
(编译后的网站位于
public/
,我已经确认
index.html
正确呈现了网站)

我还尝试了官方的
Dockerfile
,但没有成功:

FROM gatsbyjs/gatsby:onbuild
我正在从docker compose运行此操作,如下所示:

version: '3'

services:
  website:
    build: .
    ports:
      - "80:80"
Nginx返回“500内部服务器错误”


我正在学习官方教程。

更新
最新的
图像时,似乎没有重建
onbuild
图像,这会导致docker提取过时版本的基本图像。 您最好忽略
onbuild
图像并获取最新的。 你可以找到细节

测试最新图像是否正常工作

首先,我尝试从图像运行一个容器:

$ docker run -d -p 80:80 gatsbyjs/gatsby:latest
这很有效。Nginx正在这里运行

$ curl localhost
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
现在我从中克隆了一个基本的gatsbyjs站点

我将建立网站(如您的文档中所述)。 $npm安装 $gatsby build

现在我有了一个
public/
存储库。这是带有
:onbuild
标记的图像所期望的

LICENSE  README.md  node_modules/  package-lock.json  package.json  public/  src/
现在我可以在git repo中编写Dockerfile了。我将使用最新的标记(不是onbuild),这意味着我必须编写自己的
COPY
ADD
步骤。它包括:

FROM gatsbyjs/gatsby:latest
COPY public/ /pub
我将建立docker的形象

$ docker build -t my-site .
Sending build context to Docker daemon  2.791MB
Step 1/2 : FROM gatsbyjs/gatsby:latest
 ---> 21fc487ad83e
Step 2/2 : COPY public/ /pub
 ---> 87f5ea1018ee
Removing intermediate container fd35cace6ef0
Successfully built 87f5ea1018ee
Successfully tagged my-site:latest
最后,我可以从图像中启动docker容器

$ docker run -d -p 80:80 my-site
现在我可以
curl
my
localhost:80

$ curl localhost
$<!DOCTYPE html><html><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><link rel="preload" href="/component---src-pages-index-js-3a9c8c6504e39c44af75.js" as="script"/><link rel="preload" href="/path---index-a0e39f21c11f6a62c5ab.js" as="script"/><link rel="preload" href="/app-fcd7d98e3197e34ce021.js" as="script"/><link rel="preload" href="/commons-eef92a68af65d2662677.js" as="script"/><style id="gatsby-inlined-css"></style></head><body><div id="___gatsby"><div data-reactroot="" data-reactid="1" data-react-checksum="-122217258"><div data-reactid="2">Hello world!</div></div></div><script id="webpack-manifest">/*<![CDATA[*/window.webpackManifest={"231608221292675":"app-fcd7d98e3197e34ce021.js","35783957827783":"component---src-pages-index-js-3a9c8c6504e39c44af75.js","142629428675168":"path---index-a0e39f21c11f6a62c5ab.js"}/*]]>*/</script><script>/*<![CDATA[*/!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var..
$curl localhost

$你好,世界/**//*你好@lvthillo,非常感谢您的详细回答。不幸的是,正如您所看到的,我已经尝试过这种方法,即使使用
/public
,我仍然得到404。我已经在docker映像上尝试过这种方法,而错误肯定出在
docker compose
设置中。你有什么想法吗?我试过你的docker compose文件,效果很好。确保Dockerfile是正确的。我的dockerfile与上面相同,我开始docker compose时使用了:docker compose up-d——buildRookie错误——在docker compose up之前忘记了重新构建!谢谢你的帮助!
$ docker run -d -p 80:80 my-site
$ curl localhost
$<!DOCTYPE html><html><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="ie=edge"/><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"/><link rel="preload" href="/component---src-pages-index-js-3a9c8c6504e39c44af75.js" as="script"/><link rel="preload" href="/path---index-a0e39f21c11f6a62c5ab.js" as="script"/><link rel="preload" href="/app-fcd7d98e3197e34ce021.js" as="script"/><link rel="preload" href="/commons-eef92a68af65d2662677.js" as="script"/><style id="gatsby-inlined-css"></style></head><body><div id="___gatsby"><div data-reactroot="" data-reactid="1" data-react-checksum="-122217258"><div data-reactid="2">Hello world!</div></div></div><script id="webpack-manifest">/*<![CDATA[*/window.webpackManifest={"231608221292675":"app-fcd7d98e3197e34ce021.js","35783957827783":"component---src-pages-index-js-3a9c8c6504e39c44af75.js","142629428675168":"path---index-a0e39f21c11f6a62c5ab.js"}/*]]>*/</script><script>/*<![CDATA[*/!function(e,t,r){function n(){for(;d[0]&&"loaded"==d[0][f];)c=d.shift(),c[o]=!i.parentNode.insertBefore(c,i)}for(var..