在Docker中运行一个简单的Web服务器?

我正在试图build立一个简单的docker容器,提供静态HTML。 我有以下的Dockerfile:

FROM ubuntu # Install python3 RUN apt-get update RUN apt-get install -y python3 # Copy html ADD static/ /src RUN cd /src # Run http server on port 8080 EXPOSE 8080 CMD ["python3", "-m http.server 8080" 

但是,当我build立+运行它,我得到以下错误:

 /usr/bin/python3: No module named http 

我已经通过交互式shell尝试了相同的步骤,但是它们工作正常,但是一旦我使用Dockerfile就会失败。

我认为你的CMD语法是错误的。 我刚试过,它工作正常:

 FROM ubuntu # Install python3 RUN apt-get update RUN apt-get install -y python3 # Copy html ADD static/ /src RUN cd /src # Run http server on port 8080 EXPOSE 8080 CMD ["python3", "-m", "http.server", "8080"] 

我遇到了一个问题,接受的答案是networking问题阻止了我在公司networking上运行apt-get更新。

但是,下面的Dockerfile工作,我相信比共享静态HTML文件简单的事情比Ubuntu的图像更轻量级。

 FROM python:3.6.0-alpine ADD static/ /src WORKDIR /src EXPOSE 8080 ENTRYPOINT ["python3", "-m", "http.server", "8080"] 

另外,因为它涉及到原来的问题,下面也不会有用吗? 我不知道我明白将命令分解成数组的好处。

 CMD python3 -m http.server 8080