簡體   English   中英

無法在 Docker 的容器上運行 Python3 http.server

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM