Docker compose Volume - 上传的文件

标签 docker docker-compose dockerfile docker-volume docker-container

我有一个在 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/

相关文章:

docker-compose 使用指定的网络名称运行

java - Apache httpcomponent 返回 java.net.UnknownHostException : Name or service not known

spring-boot - 如何在运行Spring Boot应用程序的kubernetes中使用在localhost上运行的服务器的端口

docker - 如何创建包含公共(public)和私有(private)图像的 docker-compose.yml 文件?

docker - 根工作区的含义-执行docker run命令

docker - 推荐的方法来处理Dockerfile中的空数据库与现有数据库

docker - 如何在另一个挂载中 “mount” docker镜像?

java - Windows 中的 Docker : Failed to load native library 'libnative-platform.so' for Linux amd64

windows - 如何在 Windows 中运行 docker-compose?

Docker CLI env var 值覆盖在启动时不受容器尊重