[英]Failed to run Python3 http.server on Docker's container
我正在嘗試創建一個 Docker 容器,它運行 Python http.server 偵聽端口 8000。這是我的 Dockerfile:
FROM ubuntu:20.04 AS focal
WORKDIR /usr/src/server
COPY . .
RUN apt update && apt-get install -y build-essential python python3 zip net-tools iptables sudo curl
CMD ["python3", "-m http.server", "8000"]
首先,我成功構建了鏡像: docker build -t py_server .
然后我嘗試將圖像作為容器docker run --rm -p 8000:8000 py_server
但是拋出了以下錯誤:
/usr/bin/python3: Error while finding module specification for ' http.server' (ModuleNotFoundError: No module named ' http')
不知道為什么在 Dockerfile 中使用 CMD 指定時,python3 無法找到http
模塊。 我通過在py_server鏡像上直接使用bash執行命令測試了容器中的python3是否有http.server
,並且成功了:
$ docker run -it --rm -p 8000:8000 py_server bash
root@d3426b37cf2e:/usr/src/cs435_mp1_server# python3 -m http.server 8000
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
我對此感到非常困惑。
我剛剛注意到“http.server”前面有一個空格,這使得python3無法找到該模塊。
我在我的 Dockerfile 上編輯了 CMD 行,現在它正在工作:
CMD ["python3", "-m", "http.server", "8000"]
仍然不太確定為什么之前在“http.server”前面添加了一個空格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.