我有一个在 docker 容器中运行的基本应用程序。该应用程序是一个用户可以上传文件的页面。上传的文件存储在 app/myApp/UploadedFiles 中(app 文件夹是容器安装我的应用程序的地方)
如果我重新启动容器,我将丢失存储在文件夹 app/myApp/UploadedFiles 中的所有文件
即使我重新启动容器,保存上传文件的最佳方法是什么?
我尝试在我的 docker compose 文件中使用卷;
volumes:
- ${WEBAPP_STORAGE_HOME}/var/myFiles:/myApp/UploadedFiles
这会在以下根目录中创建一个文件夹 home>var>myFiles 但如果我上传文件,我永远不会在这些目录中看到它们。
我该怎么做?
我的目标是保留文件并可以访问它们,例如下载文件。
谢谢
编辑:
我使用 Container Registry 和这个 docker compose 在 Azure 中创建了一个应用服务:
version: '2.0'
services:
myWebSite:
image: myWebSite.azurecr.io/myWebSite:latest
volumes:
- ${WEBAPP_STORAGE_HOME}/var/myFiles:/myApp/UploadedFiles
environment:
- COMPOSE_CONVERT_WINDOWS_PATHS=1
ports:
- 5001:443
如果我在网站上上传文件,文件会转到/myApp/UploadedFiles 使用 BASH 我可以转到/home/var/myFiles 但里面没有任何文件。
我不知道这是不是正确的方法。我的应用程序日志可能会遇到同样的问题。我不知道如何阅读我的日志。
最佳答案
除了在您正在使用的服务中声明卷外,您还需要创建另一个部分以便以两种方式链接卷(从容器到机器以及从机器到 pc)
像这样:
volumes:
- database:/var/lib/postgresql/data
volumes:
database:
关于Docker compose Volume - 上传的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61843088/