Docker Elastic Beanstalk ELB 忽略 .ebextesnions
Posted
技术标签:
【中文标题】Docker Elastic Beanstalk ELB 忽略 .ebextesnions【英文标题】:Docker Elastic Beanstalk ELB Ignores .ebextesnions 【发布时间】:2020-09-02 10:01:20 【问题描述】:我正在通过 CodePipeline 将 Docker 映像部署到使用 Elastic Load Balancer 的 Elastic Beanstalk。
我的文件结构如下:
.ebextensions nginx conf.d 弹性豆茎 nginx-config.conf文件里面有如下修改:
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 10;
types_hash_max_size 2048;
client_body_buffer_size 2000M;
我注意到我的配置没有固定。当我连接到由 elasticbeanstalk 创建的实例时,我的/etc/nginx/conf.d/elasticbeanstalk/
不包含任何配置文件。
我的问题是: 1) 为什么我的 .ebextensions 被忽略? 2) 有没有其他修改nginx配置的方法?
顺便说一句,我的 Dockerrun.aws.json 和 buildspec.yml 都在执行。
【问题讨论】:
我目前也遇到同样的情况。我尝试了通过.ebextensions
中的yaml 配置文件创建.conf 并直接将nginx .conf 文件放在.ebextensions/nginx/conf.d
中的两种方法。两者都没有导致预期的结果。然后我在部署期间密切关注 conf.d
文件夹:我的 .conf 文件实际上是创建的,但整个 conf.d
文件夹在部署的后期被重新创建之后 .conf 已经放在那里。配置更改只是被删除而不是被忽略。不知道如何解决这个问题。
【参考方案1】:
对于可能遇到相同问题的任何人,这是我解决它的方法...自定义构建的 AMI。
-
转到 EC2 并创建一个实例
在 Community AMI 选项卡中,查找 elasticbeanstalk nginx 选项卡
3 启动实例并根据您的需要对其进行修改
停止实例
从停止的实例创建图像
将 ami 放入它要求容量的 Elastic Beanstalk 配置部分。
需要注意的问题。不要尝试对 /etc/nginx/nginx.conf 进行任何更改。 EBS 将自动覆盖您放入其中的任何内容。而是将所有修改放在 /etc/nginx/conf.d/somefile.conf 中,这将覆盖 /etc/nginx/nginx.conf 中的任何内容。
【讨论】:
【参考方案2】:在通过过去几年在 *** 上发布的针对此问题的不同解决方案(如 this)没有任何成功后,我试图找出数据 conf.d
被覆盖的实际位置从。我找到了文件夹/var/proxy/staging/nginx/conf.d/
。我对其进行了测试并将我的自定义 nginx conf 文件复制到该文件夹中。它奏效了。因此,您可以在 Beanstalk 上的多容器 Docker 设置的实例上更改 nginx 配置,如下所示:
# .ebextensions/00_nginx.config
files:
"/tmp/custom.conf":
mode: "000644"
owner: root
group: root
content: |
client_max_body_size 20M;
container_commands:
01_copy_conf:
command: "sudo cp /tmp/custom.conf /var/proxy/staging/nginx/conf.d/00_custom.conf"
当整个conf.d
被/etc/nginx
替换时,无论如何都会重新加载nginx,因此这里不需要重新加载。
【讨论】:
以上是关于Docker Elastic Beanstalk ELB 忽略 .ebextesnions的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk - 多容器 Docker
AWS Elastic Beanstalk Docker 环境变量
Elastic Beanstalk、Docker 和持续集成
Elastic Beanstalk 上的 WebSockets 与 Docker