Запустите Гэтсби с помощью докера - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь запустить Гэтсби с помощью Docker Compose.Насколько я понимаю, сайт Gatsby работает в моем док-контейнере.
Я сопоставляю порт 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" ]

entrypoints.sh содержит:

#!/bin/bash

yarn install
gatsby develop

docker-compose.yml работает с docker-compose up

version: '3.7'

services:
  gatsby:
    image: nxtra/gatsby
    ports:
    - "8000:8000"
    volumes:
    - ./:/project
    tty: true

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

Dockerfile и docker-compose.yml находятся в корне моего проекта Gatsby.Мой проект работает правильно, когда я запускаю его без докера gatsby develop.

Что я делаю не так, чтобы сайт Gatsby, работающий в моем контейнере, был виден на localhost: 8000?

1 Ответ

0 голосов
/ 07 ноября 2018

Моя проблема заключалась в том, что Гэтсби слушал только запросы внутри контейнера, , как этот ответ предполагает .Убедитесь, что вы настроили Gatsby для хоста 0.0.0.0.Возьмем эту (несколько хакерскую) настройку в качестве примера:

Dockerfile

FROM node:alpine
RUN npm install --global gatsby-cli

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

Вы можете запускать команды Gatsby из контейнера: docker-compose run gatsby info

Или запускать сервер разработки: docker-compose up develop

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...