我正在尝试在弹性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容器的正确方法是什么?
答案 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"
}