2017-08-08 78 views
5

我想将我的php站点从虚拟机迁移到Docker容器。我的网站将所有上传的文件保留到uploads目录。现在我想将所有文件传输到S3 Storage,并将进一步的上传保存到Amazon S3。但我不想重写php文件上传类。是否可以在Docker中创建符号链接文件夹或虚拟文件夹,以便所有在uploads/**路径上的写入和读取都被重定向到S3存储。Docker:将`/ uploads`目录绑定到Amazon S3 Storage

Docker支持S3 Storage Driver但我是新来的码头,并不知道如何将文件夹映射到dockerfile中的s3存储。没有其他例子我找到了。

谢谢你的帮助。

更新:请参阅Taruns answer。如果您也知道,托管环境上的AWS Storage Gateway是唯一的一个很好的解决方案,请注意或分享您的想法。

回答

4

您发布的S3存储链接用于Docker Registry设置,不适用于Docker卷。您需要的是将硬盘上的文件夹映射到容器。因此,让我们假设您将主机上的/var/www/uploads映射到容器内的uploads

现在你想要的是/var/www/uploads作为S3支持的文件夹实际挂载。为此,亚马逊推出了AWS Storage Gateway。您可以使用它在您的系统上创建一个支持S3的文件夹。下面是来自亚马逊的文章,详细介绍了如何配置相同

http://docs.aws.amazon.com/storagegateway/latest/userguide/ManagingLocalStorage-common.html

+0

哦,谢谢你的澄清。这是否意味着它无法在码头级别解决。我们必须为此配置主机环境?但是如果我无法访问主机环境,我只想准备docker镜像,以便它可以在任何地方运行。 – tenbits

+0

我怀疑有两个原因。如果你看看他们的设置,它说'选择一个实例类型,我们推荐m4.xlarge实例类型',因此在容器中运行它是没有意义的。接下来他们提供预先安装的设置,因此您可以在任何地方/任何地方做到这一点 –

+0

谢谢您的时间,塔伦。最后,我想要问清楚的图片:当浏览器请求一些上传的图像时,请求会进入我们的容器到'upload'文件夹,然后它到达我们系统'/ var/wwww /上传“,并从那里获取 AWS Storage Gateway处理'read'。当文件不存在时,它会转到云中,下载文件并将其传回给用户。我的理解是,管道是正确的吗?再次感谢! – tenbits