繁体   English   中英

将文件从Docker容器写入到AWS上的主机实例

[英]writing file from docker container to host instance on AWS

因此,我正在使用Travis CI将应用程序自动部署到AWS Elasticbeanstalk环境。 我有这个问题,我需要更新主机文件中的nginx.conf文件。 我在该主机内运行单个容器Docker映像。 如何将nginx.conf文件从docker容器复制或链接到主机nginx.conf文件。 目前,我的Dockerrun.aws.json如下所示:

{
    "AWSEBDockerrunVersion": "1",
    "Image": {
        "Name": "some:image:url:here",
        "Update": "true"
    },
    "Ports": [
        {
            "ContainerPort": "8001"
        }
    ],
    "Volumes": [
      {
        "HostDirectory": "/etc/nginx/nginx.conf",
        "ContainerDirectory": "/home/node/app/nginx.conf"
      }
    ]
}

当我尝试使用dockerrunversion:2时,它在版本上给我一个错误,表明版本错误。 如何将这两个文件与Single Container Docker应用程序链接?

“卷”键用于映射完整卷,而不是单个文件。 请参阅Dockerrun.aws.json 文件规范以获取解释

我知道有两种方法可以解决此问题:1)自定义AMI或2)在Dockerrun.aws.json中使用Dockerfile。

1.建立自定义AMI

构建自定义AMI的想法是从Amazon现有的AMI之一启动实例。 您需要对其进行更改(在您的情况下,请更改nginx.conf)。 最后,您从该实例创建一个新的AMI,当您在Elastic Beanstalk中创建环境时,该AMI将可供您使用。 以下是创建您自己的AMI的详细步骤以及如何将其与Elastic Beanstalk一起使用

2.在您的Dockerrun.aws.json中使用Dockerfile

如果您不构建自己的AMI,则可以在Dockerfile的帮助下复制conf文件。 Dockerfile是一个文本文件,可向Elastic Beanstalk提供命令以运行以构建您的自定义映像。 Docerfile参考详细介绍了可以添加到Dockerfile中以构建映像的命令。 你将需要使用复制命令,或者如果该文件是简单的,你可以使用Runecho建立它像例子在这里

创建Dockerfile之后,您需要将Dockerfile和Dockerrun.aws.json放入目录中,并同时创建一个zip文件。 将此作为源捆绑包提供给Elastic Beanstalk。 请按照本指南正确构建源包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM