Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Docker在卷中运行应用程序_Python_Django_Docker_Dockerfile - Fatal编程技术网

Python Docker在卷中运行应用程序

Python Docker在卷中运行应用程序,python,django,docker,dockerfile,Python,Django,Docker,Dockerfile,在我的django docker应用程序中,我想使用一个卷来管理我的应用程序文件这里是我的Dockerfile: FROM python:3.6-alpine EXPOSE 8000 RUN apk update RUN apk add --no-cache make linux-headers libffi-dev jpeg-dev zlib-dev RUN apk add postgresql-dev gcc python3-dev musl-dev VOLUME /var/lib/cat

在我的django docker应用程序中,我想使用一个卷来管理我的应用程序文件这里是我的Dockerfile:

FROM python:3.6-alpine
EXPOSE 8000
RUN apk update
RUN apk add --no-cache make linux-headers libffi-dev jpeg-dev zlib-dev
RUN apk add postgresql-dev gcc python3-dev musl-dev

VOLUME /var/lib/cathstudio/data
WORKDIR /var/lib/cathstudio/data

COPY ./requirements.txt .

RUN pip install --upgrade pip
RUN pip install -t /var/lib/cathstudio/data -r requirements.txt
ENV PYTHONUNBUFFERED 1
ENV PYTHONPATH /var/lib/cathstudio/data

COPY . /var/lib/cathstudio/data

ENTRYPOINT python /var/lib/cathstudio/data/manage.py runserver 0.0.0.0:8000
但当我运行我的应用程序时:

docker run -d -it --rm --link postgres:postgres --name=cathstudio myrepo/app_studio:latest
我明白了

python:无法打开文件“/var/lib/cathstudio/data/manage.py”:[Errno 2]没有这样的文件或目录

如果我在Dockerfile中只编写
ENTRYPOINT python manage.py runserver 0.0.0.0:8000

我的档案哪里错了?如何使用用于存储应用程序文件的卷运行应用程序


非常感谢您能在dockerfile中尝试使用-v标志而不是使用卷吗?我不知道为什么,但卷会创建确切的空卷,而不是与所有数据一起装载:

从docker文件中删除卷节并尝试以下操作

docker run -d -it --rm -v /var/lib/cathstudio/data/:/var/lib/cathstudio/data --link postgres:postgres --name=cathstudio myrepo/app_studio:latest

您是否可以尝试在dockerfile中使用-v标志而不是使用卷,我不知道为什么,但卷会创建确切的空卷,而不是与所有数据一起装载:

从docker文件中删除卷节并尝试以下操作

docker run -d -it --rm -v /var/lib/cathstudio/data/:/var/lib/cathstudio/data --link postgres:postgres --name=cathstudio myrepo/app_studio:latest

卷不用于保存代码。特别是考虑到您对@i4nk1t的回答(“我想发布我的Docker图像”)的评论,代码应该在图像本身中,而不是在卷中

您只需删除
行即可

有一些关键的副作用。其中一个原因是,它防止该目录上的任何
运行
命令在将来产生任何影响,从而使应用程序无法工作


我倾向于推荐一种工作流,确保应用程序在本地工作,然后将其打包到Docker中。如果您不能使用主机Python,并且确实必须在容器环境中进行实时开发,那么可以使用
docker run-v
选项(或等效选项)将主机内容装载到任何容器中的任何目录上,而不管它是否声明为

卷不打算保存代码。特别是考虑到您对@i4nk1t的回答(“我想发布我的Docker图像”)的评论,代码应该在图像本身中,而不是在卷中

您只需删除
行即可

有一些关键的副作用。其中一个原因是,它防止该目录上的任何
运行
命令在将来产生任何影响,从而使应用程序无法工作


我倾向于推荐一种工作流,确保应用程序在本地工作,然后将其打包到Docker中。如果您不能使用主机Python,并且必须在容器环境中进行实时开发,那么可以使用
docker run-v
选项(或等效选项)将主机内容装载到任何容器中的任何目录,无论是否声明为

您是否尝试从dockerfile中运行
ls
命令来检查文件是否确实存在?为什么要多次从当前目录复制文件?您已经设置了WORKDIR,然后只需运行
ENTRYPOINT python manage.py runserver即可0.0.0.0:8000
如果文件存在,它应该可以工作。我尝试了,但得到了:python:无法打开文件“manage.py”:[Errno 2]没有这样的文件或目录您是否尝试从dockerfile中运行
ls
命令来检查文件是否确实存在?为什么要从当前目录复制文件多次?您已经设置了WORKDIR,然后只需运行
ENTRYPOINT python manage.py runserver 0.0.0.0:8000
如果文件存在。我尝试了,但得到的结果是:python:无法打开文件“manage.py”:[Errno 2]没有这样的文件或目录您确定吗<代码>触摸busybox中的hello.txt&&echo-e\n VOLUME/var/lib/cathstudio/data\n WORKDIR/var/lib/cathstudio/data\n COPY hello.txt。\n运行cat hello.txt“>Dockerfile&&docker build-t test.&&docker run--rm test sh-c“ls”output
hello.txt
我不喜欢在docker run命令中使用-v,因为我不会将我的docker映像分发给公众,需要尽可能自动化更多。我将在dockerfile中内部创建和管理卷。谢谢你确定吗<代码>触摸busybox中的hello.txt&&echo-e\n VOLUME/var/lib/cathstudio/data\n WORKDIR/var/lib/cathstudio/data\n COPY hello.txt。\n运行cat hello.txt“>Dockerfile&&docker build-t test.&&docker run--rm test sh-c“ls”output
hello.txt
我不喜欢在docker run命令中使用-v,因为我不会将我的docker映像分发给公众,需要尽可能自动化更多。我将在dockerfile中内部创建和管理卷。谢谢