【问题标题】:Docker Gatsby Strapi produces ECONNREFUSED 127.0.0.1:1337 errorDocker Gatsby Strapi 产生 ECONNREFUSED 127.0.0.1:1337 错误
【发布时间】:2020-10-01 21:10:22
【问题描述】:

我一直在通过命令行与 Strapi 和 Gatsby 合作,以启动和运行网站和 CMS,类似于此设置 - https://strapi.io/blog/building-a-static-website-using-gatsby-and-strapi。一切正常,我已准备好进入下一步并将项目放入 Docker 进行部署。

在 Docker 中启动和运行 Strapi 和 Mongo 数据库实例非常简单,与此设置几乎相同 - https://strapi.io/documentation/3.0.0-beta.x/installation/docker.html

当我尝试将 Gatsby 安装到 Docker 时出现问题。我在 docker-compose.yml 和 Dockerfile 中尝试了大量不同的配置设置,但我一直遇到

的错误

错误 #11321 插件

"gatsby-source-strapi" 在运行 sourceNodes 时抛出错误 生命周期:连接 ECONNREFUSED 127.0.0.1:1337

错误:连接 ECONNREFUSED 127.0.0.1:1337

Strapi 和 Mongo 服务在同一个 docker-compose.yml 文件中运行良好,如下所示

version: "3"
services:
  strapi:
    image: strapi/strapi
    environment:
      DATABASE_CLIENT: mongo
      DATABASE_NAME: strapi
      DATABASE_HOST: mongo
      DATABASE_PORT: 27017
      DATABASE_USERNAME: strapi
      DATABASE_PASSWORD: strapi
    links:
      - mongo:mongo
    volumes:
      - ./cms:/srv/cms
    ports:
      - "1337:1337"

  mongo:
    image: mongo
    environment:
      MONGO_INITDB_ROOT_USERNAME: strapi
      MONGO_INITDB_ROOT_PASSWORD: strapi
    volumes:
      - ./db/db:/db/db
    ports:
      - "27017:27017"

  gatsby:
    image: docker-gatsby-client
    build: ./website
    command: gatsby develop -H 0.0.0.0
    volumes:
      - ./website:/usr/src/app/website
      - /usr/src/app/website/node_modules
    ports:
      - "8000:8000"
    depends_on:
      - strapi
      - mongo
    environment:
      GATSBY_WEBPACK_PUBLICPATH: /
      STRAPI_URL: strapi:1337

我的 Dockerfile 看起来像这样

FROM node:12

WORKDIR /usr/src/app/website

COPY package*.json ./

RUN npm install

RUN npm install -g gatsby-cli

RUN npm install --save gatsby-source-strapi

COPY . .

EXPOSE 8000

CMD ["yarn", "develop", "-H", "0.0.0.0" ]

我在 compose 文件中尝试了很多不同的设置,比如不使用卷,还有 Dockerfile,比如使用不同的节点版本。它们都不起作用,并且都返回上述相同的错误。

如果我从命令行运行 Gatsby 服务,它会从 Docker 容器连接到 Strapi 服务,一切顺利。这让我觉得 Docker 中的 Gatsby 服务设置不正确,导致连接错误。

有人有什么想法吗?

【问题讨论】:

    标签: docker docker-compose gatsby strapi


    【解决方案1】:

    在查看了 Gatsby 容器的日志后,我将已完成的网站替换为一个普通的 Hello World 实例,这样我就可以将其从列表或潜在障碍中删除。盖茨比继续旋转成功。

    更改 gatsby-config.js 文件中的某些内容以包含与 api 相关的数据会导致连接错误返回。将文件中的 apiURL 值从 http://localhost:1337 更改为 http://0.0.0.0:1337 并没有改变任何内容。

    在 Mac 上搜索跨容器连接问题得到了一条线索,最终为我工作。

    这个问题 - https://github.com/docker/for-mac/issues/2705 - 是关键。将 apiURL 值更改为 http://docker.for.mac.localhost:1337 允许 API 在 Strapi 和 Gatsby 之间进行连接。由于一些同事使用个人电脑,所以我觉得这个价值不太好,所以这看起来不太对。进一步挖掘发现了有效的http://host.docker.internal:1337 的apiURL 值。与开发版本相比,我将在生产版本上测试所有这些,看看它是如何保持的。

    【讨论】:

      猜你喜欢
      • 2022-07-22
      • 2019-05-03
      • 2022-08-21
      • 2023-02-24
      • 2022-11-04
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 1970-01-01
      相关资源
      最近更新 更多