【问题标题】:Docker compose Volume - Uploaded filesDocker compose Volume - 上传的文件
【发布时间】:2020-09-02 16:29:17
【问题描述】:

我有一个在 docker 容器内运行的基本应用程序。该应用程序是用户可以上传文件的页面。上传的文件存储在 app/myApp/UploadedFiles 中(app 文件夹是容器安装我的应用程序的位置)

如果我重新启动容器,我会丢失文件夹 app/myApp/UploadedFiles 中存储的所有文件

即使我重新启动容器,保存上传文件的最佳方法是什么?

我尝试在我的 docker compose 文件中使用卷;

volumes:
      - ${WEBAPP_STORAGE_HOME}/var/myFiles:/myApp/UploadedFiles

这会在以下根目录中创建一个文件夹>var>myFiles 但如果我上传文件,我永远不会在这些目录中看到它们。

我该怎么做?

我的目标是保存文件并可以访问它们,例如下载文件。

谢谢

编辑:

我在 Azure 中使用 Container Registry 和这个 docker compose 创建了一个应用服务:

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 但里面没有任何文件。

我不知道这是否是正确的方法。我的应用程序日志可能有同样的问题。我不知道如何阅读我的日志。

【问题讨论】:

  • 使用卷(命名卷或来自主机目录的绑定挂载)是解决此问题的正确方法。如果它似乎不起作用,请在您的问题中提供足够的信息以便我们重现问题,我们可能会帮助您解决问题。

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


【解决方案1】:

除了在您正在使用的服务中声明卷之外,您还需要创建另一个部分以便以两种方式链接卷(从容器到机器以及从机器到 PC)

像这样:

volumes:
      - database:/var/lib/postgresql/data
volumes:
  database:

【讨论】:

  • 但是什么是数据库:?我知道 /var/lib/postgresql/data 是应用程序在容器内写入的文件夹。但是我怎样才能阅读这些文件呢?在哪里?
猜你喜欢
  • 1970-01-01
  • 2018-10-24
  • 1970-01-01
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-16
  • 2019-10-22
相关资源
最近更新 更多