将文件从docker容器写入AWS

时间:2018-06-04 09:16:42

标签: amazon-web-services docker nginx elastic-beanstalk travis-ci

所以我使用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时,它给出了构建错误的构建错误。 如何将这两个文件与单个容器Docker应用程序链接?

1 个答案:

答案 0 :(得分:0)

“Volumes”键用于映射完整卷,而不是单个文件。请参阅Dockerrun.aws.json file specifications for an explanation

我知道有两种方法可以解决这个问题:1)自定义AMI或2)使用Docker文件和Dockerrun.aws.json。

1。构建自定义AMI

构建自定义AMI背后的想法是从Amazons现有的AMI之一启动一个实例。您可以进行所需的更改(在您的情况下,更改nginx.conf)。最后,您可以从此实例创建一个新的AMI,当您在Elastic Beanstalk中创建环境时,它将可供您使用。 Here are the detailed steps to create your own AMI and how to use it with Elastic Beanstalk

2。将Dockerfile与Dockerrun.aws.json

一起使用

如果您不构建自己的AMI,可以在Dockerfile的帮助下复制conf文件。 Dockerfile是一个文本文件,它向Elastic Beanstalk提供命令以运行以构建自定义映像。 Docerfile reference详细说明了可以添加到Dockerfile以构建映像的命令。您将需要使用the Copy命令,或者如果文件很简单,您可以使用Runecho来构建它,就像示例here中一样。

创建Dockerfile后,您需要将Dockerfile和Dockerrun.aws.json放入目录并使用两者创建一个zip文件。将此提供给Elastic Beanstalk作为源包。按照this guide正确构建源包。