在ECS上使用我修改过的nginx.conf启动NginX

问题描述 投票:0回答:1

我在AWS中有一个环境,它有一个ECS集群,一个EFS源和一些在这个集群上运行的服务。

我的一项服务是NginX Web服务器,我用它来服务我们的网站和我们的服务。作为保留一些敏感和静态配置文件的解决方案,我们选择了EFS服务。因此,每个服务都会从此EFS创建一个卷,并在每次容器启动时挂载它。

问题出在NginX上。我想将我的nginx.conf文件存储到EFS文件夹中,在NginX服务启动后,我们希望容器在/etc/nginx/文件夹中复制此文件,以便我的NginX服务器从我的配置开始。

  1. 我已经尝试构建自己的映像,包括我的配置,但是这不是我们想要的。这意味着我们每次想要在nginx.conf上更改一行时都应该构建一个新映像。
  2. 我试图创建一个脚本,每次容器启动时运行并复制我的配置,但我没有设法让它在ECS上播放。 NginX无法重新加载,语法错误,文件不可用。
#!/bin/bash
cp /efs/nginx.conf /etc/nginx/
nginx -s reload
  1. Ι考虑找出如何创建一个cron作业运行每X分钟并将我的nginx.conf复制到etc / nginx但这似乎是一个愚蠢的方法。
  2. 我做了60个不同的任务定义修订版,以了解此CMD环境选项如何在ECS上运行。当然,大多数都与语法有关,我得到bach错误,如“无效选项:bash”或“无效选项:/tmp/1.sh”等

样品:

1.命令["cp","/efs/nginx.conf /etc/nginx/"]

2.Entry point ["nginx","-g","daemon off;"] Command ["cp /efs/nginx.conf /etc/nginx/"]

  1. 切入点:["nginx","-g","daemon off"]命令:["/bin/sh","cp","/efs/nginx.conf/","/etc/nginx/"]
  2. 命令["[\"cp\"","\"/efs/nginx.conf\"","\"/etc/nginx/\"]","[\"nginx\"","\"-g\"","\"daemon off;\"]"]
  3. 命令["cp /efs/nginx.conf /etc/nginx/","nginx -g daemon off;"]
  4. 命令["cp","/efs/nginx.conf /etc/nginx/","nginx -g daemon off;"]

-

有谁知道或有没有人已经在ECS上实施此解决方案?用绑定卷中的修改后的/etc/nginx/nginx.conf替换?

提前致谢

amazon-web-services docker nginx amazon-ecs
1个回答
0
投票

解:

正如我在上面的问题中提到的,我想使用一个静态的nginx.conf文件,它将进入一个EFS文件夹,进入我的nginx服务容器。我的任务定义很简单

FROM nginx
EXPOSE 80
RUN mkdir /etc/nginx/html

通过ECS任务定义,我创建一个卷,然后创建一个安装点,这是一个简单的过程,并且工作正常。问题出在入口点字段,它应该包括我的脚本目录和我的脚本本身。

在ECS任务定义环境入口点字段我推出

sh,-c,/efs/docker-cmd-nginx.sh

我的脚本就是以下内容

#!/bin/dash
cp /efs/nginx.conf /etc/nginx/ &&
nginx -g "daemon off;"

PS:问题可能是:

  1. 我的脚本,我没有在守护进程中使用双引号;部分但我在整行nginx -g守护进程中使用双引号;
  2. 我的脚本试图重新加载甚至还没有运行的nginx。
  3. 我试图将命令分别放在我的任务入口点是错误的,语法方面肯定也许是策略方面的。
© www.soinside.com 2019 - 2024. All rights reserved.