运行 杰基尔 Docker

Run Jekyll on Docker

我正尝试在 ubuntu-20.04 容器上 运行 最新版本的 jekyll。我的容器在下面。 我能够构建并且我看到我能够 运行 容器上的站点。但是现在,我无法让网站对外公开

Buidl 就是成功

sudo docker build --tag jekyll_site:1.0 .

运行 也成功了,我看到站点是 运行ning 在端口 4000 上。

sudo docker run -p 80:4000 jekyll_site:1.0

FROM ubuntu:20.04
RUN apt update
RUN apt install -y ruby-full
RUN apt-get install -y build-essential zlib1g-dev
RUN gem install jekyll bundler

ENV HOME=/home/user
ENV GEM_HOME=/home/user/gems
ENV PATH=/home/user/gems/bin:$PATH
EXPOSE 4000
RUN ruby --version
RUN gem --version
WORKDIR /home/user/
RUN mkdir -p /home/user/my-awesome-site
RUN jekyll new my-awesome-site
RUN ls /home/user
WORKDIR /home/user/my-awesome-site
CMD bundle exec jekyll serve

问题

无法在端口 80 上获取站点。我在这里遗漏了什么吗?

将 CMD 更改为一系列字符串后,我可以 运行 它。

CMD [ "bundle", "exec", "jekyll", "serve", "--force_polling", "-H", "0.0.0.0", "-P", "4000" ]

最终版本

FROM ubuntu:20.04
RUN apt update
RUN apt install -y ruby-full
RUN apt-get install -y build-essential zlib1g-dev
RUN gem install jekyll bundler

ENV HOME=/home/user
ENV GEM_HOME=/home/user/gems
ENV PATH=/home/user/gems/bin:$PATH
EXPOSE 4000
RUN ruby --version
RUN gem --version
WORKDIR /home/user/
RUN mkdir -p /home/user/my-awesome-site
RUN jekyll new my-awesome-site
RUN ls /home/user
WORKDIR /home/user/my-awesome-site
CMD [ "bundle", "exec", "jekyll", "serve", "--force_polling", "-H", "0.0.0.0", "-P", "4000" ]

你就是这样 版本:“3.8”

services:
  site:
    image: jekyll/jekyll
    command: bash -c "jekyll new --force ./ && jekyll s"
    volumes: 
      - .:/srv/jekyll
    ports:
      - 4000:4000
    environment:
      JEKYLL_ENV: development