【问题标题】:How to copy data from docker container to ECS on startup (AWS)?如何在启动时将数据从 docker 容器复制到 ECS(AWS)?
【发布时间】:2017-08-11 11:33:12
【问题描述】:

我有两个容器,一个是 web-server 基于 Node.JS 的 assets 目录。另一个容器是 nginx,它将页面请求代理到网络服务器并从 assets 目录获取静态信息。

我创建了 AWS 集群、EC2 实例,构建了 docker 映像并将其推送到注册表,制定了部署我的应用程序的任务,但我无法将 assets 目录共享到 nginx,因为目录不是这个容器的一部分。

所以为了解决我的问题,我想办法创建 EFS 并附加卷,向 ec2-user 添加权限并通过路径 /var/html/assets 使目录可用。

很酷,如何将资产内容从我的网络服务器 docker 容器复制到 /var/html/assets

我想将其公开/共享,因为很快我将创建额外的服务器,这些服务器也应该将资产放置到这个公共目录中。

这个过程应该是自动化的,并且可以在每个部署上运行,伙计们,有什么建议吗?谢谢!

【问题讨论】:

    标签: amazon-web-services docker amazon-ec2 amazon


    【解决方案1】:

    要将资产内容从您的网络服务器 docker 容器复制到您的主机, 假设您要将您的资产内容从容器保存到主机上的 /var/html/assets,请使用此命令运行您的容器:

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

    -v ~/var/html/assets:[Your Container path] 设置一个 bindmount 卷,将 Nginx 容器内部的 [Your Container path] 目录链接到主机上的 ~/var/html/assets 目录. Docker 使用 : 将主机路径与容器路径分开,并且主机路径总是在前。

    希望它会有所帮助!

    【讨论】:

    • 感谢您的回答,不幸的是,由于使用 AWS ECS,我无法直接影响docker run 命令。但是我有一个 AWS 任务,我可以在其中定义要执行的命令。它类似于 docker compose,但有一些区别。由于我的资产已经预先构建,我认为我需要安装一个卷,然后使用“命令”中的指令复制资产。 "command": [ "/bin/sh", "-c", "cp -r /web/dist/assets/* /var/www/assets/ && yarn run _production" ]你觉得这个解决方案怎么样?
    【解决方案2】:

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

    注意: 这是一种临时/解决方法,出于安全考虑,授予 xrw 对目录的访问权限并不是一个好方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 2017-09-04
      • 1970-01-01
      相关资源
      最近更新 更多