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

Elastic Beanstalk Docker 映像无法拉取

Elastic Beanstalk 多容器 Docker 环境变量