Nginx服务器未与Gatsbyjs默认Docker映像一起运行

时间:2018-07-19 11:35:49

标签: 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:
  website:
    build: .
    ports:
      - "80:80"

Nginx返回“ 500内部服务器错误”。

我正在关注官方教程here

1 个答案:

答案 0 :(得分:3)

更新onbuild映像时似乎未重建latest映像,这会导致docker拉出基础映像的过时版本。 您最好忽略onbuild图片,并获取最新图片。 Here,您可以找到详细信息。

测试最新图像是否有效。

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

$ 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>

删除容器。

我将在全球范围内安装gatsby

$ npm install --global gatsby-cli

现在,我从here克隆了一个基本的gatsbyjs网站。

$ git clone https://github.com/gatsbyjs/gatsby-starter-hello-world.git
$ cd gatsby-starter-hello-world\

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

现在我有一个public/存储库。这就是带有:onbuild标签的图片所期望的。

LICENSE  README.md  node_modules/  package-lock.json  package.json  public/  src/

现在我可以在git repo中编写我的Dockerfile了。我将使用最新的标记(不是onbuild),这意味着我必须编写自己的COPYADD步骤。它包含:

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 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..