所以我使用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应用程序链接?
答案 0 :(得分:0)
“Volumes”键用于映射完整卷,而不是单个文件。请参阅Dockerrun.aws.json file specifications for an explanation。
我知道有两种方法可以解决这个问题:1)自定义AMI或2)使用Docker文件和Dockerrun.aws.json。
构建自定义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
如果您不构建自己的AMI,可以在Dockerfile
的帮助下复制conf文件。 Dockerfile是一个文本文件,它向Elastic Beanstalk提供命令以运行以构建自定义映像。 Docerfile reference详细说明了可以添加到Dockerfile以构建映像的命令。您将需要使用the Copy命令,或者如果文件很简单,您可以使用Run
和echo
来构建它,就像示例here中一样。
创建Dockerfile后,您需要将Dockerfile和Dockerrun.aws.json放入目录并使用两者创建一个zip文件。将此提供给Elastic Beanstalk作为源包。按照this guide正确构建源包。