代码之家  ›  专栏  ›  技术社区  ›  Angel Gutierrez

用于存储jpg的Docker卷使用情况

  •  3
  • Angel Gutierrez  · 技术社区  · 6 年前

    所以,我构建了一个小应用程序来测试docker的工作原理,这是一个小型的laravel应用程序,可以用它的个人资料图像注册用户。一切正常,但未显示配置文件图像。

    我想这是因为docker的工作方式(短暂、不变等),所以我读了一些关于卷的内容,但不幸的是,我没能让它工作。

    这些图像存储在一个名为uploads within public folder(laravel结构)的文件夹中。

    在我的docker中撰写。yml文件我定义了以下卷:

        volumes:
          - mysql-data:/var/lib/mysql
    

    所以我试着添加我需要的一个,类似这样:

        volumes:
          - mysql-data:/var/lib/mysql
          - user-images:/app/public/uploads
        volumes:
          mysql-data:
          user-images:
    

    我也尝试了绑定挂载,但我认为这只能使用docker容器运行(不太确定)。

    你知道我该怎么解决这个问题吗?

    谢谢

    2 回复  |  直到 6 年前
        1
  •  0
  •   VonC    6 年前

    user-images:/app/public/uploads 将是一个 已命名 体积,在中定义 /var/lib/docker/volumes

    如果要使用 a bind mount ,即将主机文件夹装载为卷,请使用路径:

    volumes:
      - "./user-images:/app/public/uploads"
    

    另请参见“ Laravel + Docker “及其 part 2 有关更完整的示例。

        2
  •  0
  •   Adam    6 年前

    我假设您的图像位于目录树中,由dockerfile/docker组成。如果是这种情况,您实际上不想使用命名卷,因为这些卷存储在系统的其他位置,并且需要将图像移动到该位置。(请参见下图中的“Mountpoint”)

    enter image description here

    您可能想要使用的是 --mount 在您的撰写文件中看起来像这样的标志。。。

    volumes:
      - type: bind
        source: ./path/to/file
        target: /app/public/uploads
    

    参见docker volumes 停靠以获取更多信息。我编写了我更喜欢的长版本,因为它更明确,但排序版本也做同样的事情。您应该知道,如果文件重叠,使用绑定卷将覆盖您可能添加到实际图像中的任何文件。提示:当您有一个热重新加载的dev服务器时,这很方便,因为您可以在本地更改文件,并且这些文件可以在容器上下文中运行。