繁体   English   中英

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

[英]Starting NginX with my modified nginx.conf on ECS

我在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. 我曾考虑找出如何创建每隔X分钟运行一次cron作业并将我的nginx.conf复制到etc / nginx的方法,但这似乎是一种愚蠢的方法。
  2. 我进行了60个不同的任务定义修订,以了解此CMD Environment选项在ECS上如何工作。 当然,它们中的大多数都与语法有关,并且我得到诸如“无效选项:bash”或“无效选项:/tmp/1.sh”之类的bach错误。

样品:

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

2.入口点["nginx","-g","daemon off;"]命令["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替换?

提前致谢

解:

就像我在上面的问题中提到的那样,我想在Nginx服务容器中使用一个静态的nginx.conf文件,该文件位于EFS文件夹中。 我的任务定义很简单

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. 我尝试将命令分别放在任务的入口点是错误的,肯定是语法上的,甚至是策略上的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM