我对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映像似乎构建得很好,但是当我去运行容器时:
docker container run -v /home/me/dev/djangoRESTreact/code:/code -it --rm djangodev /bin/bash我的本地挂载/home/me/dev/djangoRESTreact/code没有填充我期望从这个Dockerfile和挂载中获得的djangoProject venv目录。码头容器在/code上也有一个空目录。如果我直接在容器中运行python3 -m venv djangoProject,就会创建venv目录,并且我可以在主机和容器中看到它。
知道为什么没有在映像和后续容器中创建我的venv吗?
我要把头发拔出来。
提前感谢!
发布于 2020-02-13 20:45:43
用-v挂载卷会使主机上的/home/me/dev/djangoRESTreact/code安装在容器中的/code上。这个安装在任何在构建过程中放置在那里的东西(你的venv)。
如果您在没有-v标志的情况下运行容器,您可能会发现venv目录存在。
您可能应该避免在容器中创建venv,因为它是一个孤立的环境。
相反,只需将requirements.txt复制到容器中,并将它们直接安装在容器中即可。类似于:
COPY ./requirements.txt /requirements.txt
RUN pip install -U pip && pip install -r /requirements.txthttps://stackoverflow.com/questions/60215951
复制相似问题