Stu*_*er7 0 python docker dockerfile
我对 Docker 比较陌生,作为一个实验,我尝试使用以下 Dockerfile 创建一个通用的 Django 开发容器:
FROM python
ENV PYTHONUNBUFFERED 1
RUN apt-get update && apt-get dist-upgrade -y
RUN mkdir /code
WORKDIR /code
RUN python3 -m venv djangoProject
RUN /bin/bash -c "source /code/djangoProject/bin/activate && python3 -m pip install --upgrade pip && pip install django"
EXPOSE 8000
Run Code Online (Sandbox Code Playgroud)
图像似乎构建得很好,但是当我去运行容器时:
docker container run -v /home/me/dev/djangoRESTreact/code:/code -it --rm djangodev /bin/bash
Run Code Online (Sandbox Code Playgroud)
我的本地挂载 /home/me/dev/djangoRESTreact/code 未填充我期望从此 Dockerfile 和挂载中获得的 djangoProject venv 目录。docker 容器在 /code 处还有一个空目录。python3 -m venv djangoProject如果我直接在容器内运行,则会创建 venv 目录,并且我可以在主机上和容器内看到它。
知道为什么我的 venv 没有在映像和后续容器中创建吗?
我正在拔头发。
提前致谢!
Docker 容器中根本不需要 venv,因此不必费心。
FROM python
ENV PYTHONUNBUFFERED 1
RUN apt-get update && apt-get dist-upgrade -y
RUN mkdir /code
WORKDIR /code
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install django
EXPOSE 8000
Run Code Online (Sandbox Code Playgroud)
不过,要回答你的问题,你误解了-v坐骑的工作原理;他们将主机上的东西安装到容器中的目录上。在 dockerfile 中创建的内容/code/...基本上被卷挂载覆盖,这就是为什么您根本看不到 venv。
| 归档时间: |
|
| 查看次数: |
1405 次 |
| 最近记录: |