Jekyll 站点在 docker 容器内运行,但 localhost:4000 在主机上不起作用

Luk*_*kas 3 jekyll docker dockerfile docker-compose

目录结构:

  • docker-compuse.yml
  • /faq/.... 所有网站

在我运行的根目录中docker-compose up --build,我得到该站点正在运行的输出:

faq-site_1  | Configuration file: /srv/faq/_config.yml
faq-site_1  |             Source: /srv/faq
faq-site_1  |        Destination: /srv/faq/_site
faq-site_1  |  Incremental build: disabled. Enable with --incremental
faq-site_1  |       Generating... 
faq-site_1  |                     done in 1.37 seconds.
faq-site_1  |  Auto-regeneration: enabled for '/srv/faq'
faq-site_1  | LiveReload address: http://127.0.0.1:35729
faq-site_1  |     Server address: http://127.0.0.1:4000/faq/
faq-site_1  |   Server running... press ctrl-c to stop.
Run Code Online (Sandbox Code Playgroud)

我通过 SSH 连接到容器docker exec -it c94ad3af91c9 bash并执行了curl localhost:4000. 得到了 HTML 的预期结果。

我尝试从主机在http://127.0.0.1:4000上运行该站点,Chrome 失败并显示“ERR_EMPTY_RESPONSE”。

我已将 jekyll 配置为在/faq. 尝试访问

没有任何效果。我总是从 chrome 得到这个:

在此处输入图片说明

Dockerfile:

FROM ubuntu:16.04

RUN apt-get update
RUN apt-get install -y --no-install-recommends apt-utils
RUN apt-get install -y ruby ruby-dev build-essential
RUN gem install jekyll bundler
RUN gem install jekyll-feed
RUN gem install jekyll-paginate
RUN gem install minima

RUN bundle -v
RUN gem -v
RUN jekyll -v

COPY ./ /srv/faq
WORKDIR /srv/faq
CMD ["bundle", "exec", "jekyll", "serve", "--livereload"]
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml:

version: '3'

services:
  faq-site:
    build: ./faq
    volumes:
      - ./faq:/srv/faq
    ports:
      - "4000:4000"
      - "35729:35729"
Run Code Online (Sandbox Code Playgroud)

mbu*_*ann 10

尝试绑定到0.0.0.0. 然后可以从外部 IP 访问您的站点。

CMD ["bundle", "exec", "jekyll", "serve", "--livereload", "--host", "0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)