所以,我构建了一个小应用程序来测试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(不太确定)。
关于如何解决这个问题的任何想法?
由于
答案 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"下图)
您可能想要使用的是--mount
标志,它在您的撰写文件中会如此...
volumes:
- type: bind
source: ./path/to/file
target: /app/public/uploads
有关详细信息,请参阅docker volumes停靠栏。我写了我喜欢的长版本,因为它更明确,但排序版本做同样的事情。您应该知道,如果它们重叠,使用绑定卷将覆盖您可能添加到实际图像的任何文件。提示这是一个方便的,当你有一个热重装开发服务器,因为你可以在本地更改文件,并在容器上下文中运行。