python - Docker 在卷中运行应用程序
问题描述
在我的 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
我的文件哪里错了?如何使用存储应用程序文件的卷运行我的应用程序?
非常感谢提前
解决方案
您可以尝试使用 -v 标志而不是在 dockerfile 中使用 VOLUME 吗,我不确定为什么,但是 VOLUME 创建了确切的空卷,而不是与所有数据一起安装:
从 docker 文件中删除 VOLUME 部分并尝试以下操作
docker run -d -it --rm -v /var/lib/cathstudio/data/:/var/lib/cathstudio/data --link postgres:postgres --name=cathstudio myrepo/app_studio:latest
推荐阅读
- python-3.x - 如何使用 Anaconda 在 WSL + UBUNTU20.04 + python3.8 上安装 openCV?
- html - 调整屏幕大小时隐藏元素
- python - Jupyter Notebook 不会自动完成库、方法或属性的代码
- shopify - 如何将运费添加到特定产品 shopify?
- python - 在python中转换为纯文本
- pdfbox - 关于 Apache PDFBox 和 PDF 认证的问题
- javascript - 为什么 splice 函数中的变量 i 递减?
- python - 带有 CherryPy 的 Django - ModuleNotFound 错误
- angular - 使用 @ngtools/webpack 在 Angular 11 + Webpack 4 中实现 AOT
- angular - 隐藏在 kendo kendo-sortable angular 中拖动时的弹出窗口