在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