2017-08-11 46 views
1

我有两个容器,一个是网络服务器基于Node.JS与assets目录。另一个容器是nginx它将页面请求提供给网络服务器,并从assets目录获取静态信息。如何在启动时将数据从Docker容器复制到ECS(AWS)?

我创建AWS集群,EC2实例,建立并推动泊坞窗图像注册表,做任务来部署我的应用程序,但由于目录不是此容器的一部分,我不能assets目录nginx的分享。

因此,为了解决我的问题,我想出了创建EFS并附加卷,为ec2-user添加权限并使路径/var/html/assets可用的目录。

酷和如何将资产内容从我的网络服务器码头集装箱复制到/var/html/assets

我想让它公开/共享,因为很快我会制造额外的服务器,这些服务器也应该将资产放置到这个公共目录。

这个过程应该自动化,并在每个部署工作,家伙,任何建议?谢谢!

回答

3

要将资产内容从您的网络服务器码头容器复制到您的主机, 表示您要将资产内容从容器保存到主机上的/ var/html/assets,请使用以下命令运行您的容器:

docker run --name=nginx -d -v ~/var/html/assets:[Your Container path] -p 5000:80 nginx 

-v〜在/ var/HTML /资产:你的容器路径]设置了绑定装入容积从Nginx的容器来了〜在/ var/HTML /资产目录内链接[你的容器路径]目录在主机上。 Docker使用a:将容器路径中的主机路径分开,并且主机路径始终优先。

希望它会帮助!

+0

感谢您的回答,不幸的是,由于使用AWS ECS,我不能直接影响'docker run'命令。 但我有一个AWS任务,我可以定义要执行的命令。 它与码头组成类似,但有一些差异。 由于我的资产已经预先建好,我想我需要安装一个卷,然后通过使用指令在我的“命令”中复制资产。 ' “命令”: “/ bin/sh的”, “-c”, “CP -R /网络/距离/资产/ * /无功/网络/资产/ &&丝线行进_production” ]' 您对此解决方案有何看法? –

0

我通过编写主机目录chmod 777 /var/html/assets来解决问题,然后添加了一个正在寻找主机目录的卷,并将其应用于webnginx容器。在运行web容器时,它调用cp指令将资产复制到挂载目录(主机目录)。 Nginx会看到填充的目录并可以使用它。

注意:这是一个临时/解决方案的解决方案,由于安全性,xrw访问目录不是一个好方法。

相关问题