首页 > 解决方案 > Dockerfile 中的 WORKDIR 指令在容器化 Python 应用程序时无效

问题描述

我有以下 Dockerfile 来容器化 Python 应用程序:

FROM python:3.8-slim
WORKDIR /app
COPY ./simple_http_server.py .
CMD [ "python", "./simple_http_server.py" ]

我使用以下命令运行:

docker run -d -p 5000:8000 simple_http_server

它运行良好。docker ps -a显示容器已启动n几秒钟,容器 id 为xyz. 然后我附加到容器以使用命令检查容器内部

docker exec -i  -t xyz /bin/bash

一旦进入容器,执行pwd命令会显示它在/code目录中。

root@3df086098bf2:/code# pwd
/code

事实上,WORKDIR /app上面的指令似乎完全没有效果。我哪里都看不到/app

为什么WORKDIR没有效果以及如何修复的解释是什么?

标签: pythondocker

解决方案


您是否在更新后重新构建了映像WORKDIR /app,这可能是因为您使用WORKDIR /code.
尝试:

docker build -t simple_http_server .

然后:

docker run -dp 5000:8000 simple_http_server

推荐阅读