在Docker上运行Jekyll 问题最终版本

问题描述

我正在尝试在jekyll容器上运行ubuntu-20.04的最新版本。我的容器在下面。 我可以构建,并且可以在容器上运行该站点。但是现在,我无法将该网站暴露给外界

Buidl是成功的

sudo docker build --tag jekyll_site:1.0。

运行也成功,我看到站点在端口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","4000" ]
,

这就是你的方式 版本:“ 3.8”

from django.db.models import Prefetch

prefetched_prices = Prefetch("prices",queryset=Item_Price.objects.order_by("price"))

for i in Item.objects.prefetch_related(prefetched_prices): i.name,i.prices.all()