.bebextensions与Docker在elasticbeanstalk上

时间:2015-01-23 04:48:48

标签: amazon-web-services nginx websocket docker elastic-beanstalk

我正在尝试在弹性beanstalk Docker实例上配置nginx以允许使用websockets。使用找到的信息here我将.ebextensions / 01_files.config添加到我正在部署的zip中。

zip包含.ebextensions / 01_files.config,Dockerfile和我的应用程序的tgz。

01_files.config的内容如下:

files:
    "/etc/nginx/conf.d/websocketupgrade.conf" :
        mode: "000755"
        owner: root
        group: root
        content: |
            proxy_set_header        Upgrade         $http_upgrade;
            proxy_set_header        Connection      "upgrade";

弹性豆茎似乎忽略了我的.ebextensions。永远不会写文件/etc/nginx/conf.d/websocketupgrade.conf。

在弹性beanstalk上使用.ebextensions与Docker容器的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

我非常确定ElasticBeanstalk会覆盖/etc/nginx/conf.d/作为设置应用程序的一部分,所以你在ebextensions中放置的任何东西都会在应用程序启动时消失。

要解决此问题,您需要对暂存区域进行更改,而不是对最终目标进行更改。我不确定elasticbeanstalk nginx部署的暂存区域是什么,但如果你查看

container_command:

你应该能够搞清楚。

你应该使用:

ScrollView

指令,用于更改暂存区域。

答案 1 :(得分:-1)

Elastic Beanstalk现在支持docker而且黑客攻击少得多,你应该使用Dockerfile and Dockerrun.aws.json

只需将新容器放在offical nginx图片上,然后添加您在上面发布的配置文件。然后使用dockerrun文件拉入你的nginx图像(参见下面的例子)。

{
  "AWSEBDockerrunVersion": "1",
  "Authentication": {
    "Bucket": "my-bucket",
    "Key": "mydockercfg"
  },
  "Image": {
    "Name": "me/my-nginx-image",
    "Update": "true"
  },
  "Ports": [
    {
      "ContainerPort": "80"
    }
  ],
  "Volumes": [
    {
      "HostDirectory": "/var/",
      "ContainerDirectory": "/etc/mysql"
    }
  ],
  "Logging": "/var/log/nginx"
}