用于存储jpg的Docker卷使用量

时间:2018-03-31 05:08:56

标签: laravel docker png jpeg docker-volume

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

我认为这是因为docker的工作原理(短暂的,不变的等),所以我正在阅读有关卷的内容,但不幸的是我无法使它工作。

图像存储在公共文件夹(laravel结构)中名为uploads的文件夹中。

在我的docker-compose.yml文件中,我定义了以下卷:

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

所以我试着添加我需要的那个,像这样:

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

我也试过使用绑定挂载,但我认为这只能使用docker container run(不太确定)。

关于如何解决这个问题的任何想法?

由于

2 个答案:

答案 0 :(得分:0)

user-images:/app/public/uploads将是名为的卷,在/var/lib/docker/volumes中定义

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

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

另见" Laravel + Docker"及其part 2以获得更完整的示例。

答案 1 :(得分:0)

我假设您的图片位于目录树中,其中包含dockerfile / docker-compose。如果是这种情况,您实际上并不想使用指定的卷,因为这些卷存储在系统的其他位置,并且需要您将图像移动到该位置。 (参见" Mountpoint"下图)

enter image description here

您可能想要使用的是--mount标志,它在您的撰写文件中会如此...

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

有关详细信息,请参阅docker volumes停靠栏。我写了我喜欢的长版本,因为它更明确,但排序版本做同样的事情。您应该知道,如果它们重叠,使用绑定卷将覆盖您可能添加到实际图像的任何文件。提示这是一个方便的,当你有一个热重装开发服务器,因为你可以在本地更改文件,并在容器上下文中运行。