使用docker compose运行Gatsby

xtr*_*tra 5 docker docker-compose gatsby

我正在尝试通过Docker Compose运行Gatsby。据我了解,Gatsby站点正在我的docker容器中运行。
我将容器的端口8000映射到我的本地主机上的端口8000。但是,在浏览时,localhost:8000我无法获得我的盖茨比站点。

我使用以下内容Dockerfile来构建图像docker build -t nxtra/gatsby .

FROM node:8.12.0-alpine

WORKDIR /project

COPY ./package.json /project/package.json
COPY ./.entrypoint/entrypoint.sh /entrypoint.sh

RUN apk update \
  && apk add bash \
  && chmod +x /entrypoint.sh \
  && npm set progress=false \
  && npm install -g yarn gatsby-cli

EXPOSE 8000

ENTRYPOINT [ "/entrypoint.sh" ]
Run Code Online (Sandbox Code Playgroud)

entrypoints.sh 包含:

#!/bin/bash

yarn install
gatsby develop
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml与 docker-compose up

version: '3.7'

services:
  gatsby:
    image: nxtra/gatsby
    ports:
    - "8000:8000"
    volumes:
    - ./:/project
    tty: true
Run Code Online (Sandbox Code Playgroud)

docker ps显示端口8000已转发0.0.0.0:8000->8000/tcp
检查我的容器以docker inspect --format='{{.Config.ExposedPorts}}' id确认端口的暴露-> map[8000/tcp:{}]

docker tops 容器上的表示容器中正在运行以下进程:

18465               root                0:00                {entrypoint.sh} /bin/bash /entrypoint.sh
18586               root                0:11                node /usr/local/bin/gatsby develop
18605               root                0:00                /usr/local/bin/node /project/node_modules/jest-worker/build/child.js
18637               root                0:00                /bin/bash
Run Code Online (Sandbox Code Playgroud)

Dockerfile和docker-compose.yml位于我的Gatsby项目的根目录中。在没有docker的情况下运行我的项目时,它运行正常gatsby develop

要使在我的容器中运行的Gatsby网站在localhost:8000上可见,我在做什么?

Mat*_*sen 5

我的问题是,盖茨比只在听容器中的请求,就像这个答案所暗示的那样。确保为主机配置了Gatsby 0.0.0.0。以这个(有点hacky)设置为例:

Docker文件

FROM node:alpine
RUN npm install --global gatsby-cli
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: "3.7"

services:
  gatsby:
    build:
      context: .
      dockerfile: Dockerfile
    entrypoint: gatsby
    volumes:
      - .:/app

  develop:
    build:
      context: .
      dockerfile: Dockerfile
    command: gatsby develop -H 0.0.0.0
    ports:
      - "8000:8000"
    volumes:
      - .:/app
Run Code Online (Sandbox Code Playgroud)

您可以从容器中运行Gatsby命令: docker-compose run gatsby info

或运行开发服务器: docker-compose up develop

  • 我会的,但是您要做的要点是听`0.0.0.0`。我想我应该将答案设为docker-compose.yml文件。 (2认同)
  • `gatsby Development -H 0.0.0.0` 成功了,谢谢! (2认同)