我在AWS中具有ECS群集,EFS源和某些在此群集上运行的服务。
我的服务之一是我用来为我们的网站和我们的服务服务的NGINX Web服务器。作为保留一些敏感和静态配置文件的解决方案,我们选择了EFS服务。因此,每个服务都会从此EFS创建一个卷,并每次容器启动时都会安装。
问题是nginx。我想将我的nginx.conf文件存储到EFS文件夹中,然后在NGINX服务启动后,我们希望容器在/etc/nginx/
文件夹中复制此文件,以便我的Nginx服务器以我的配置开始。
- 我试图构建自己的图像,包括成功的配置,但这不是我们想要的。这意味着我们应该每次要在nginx.conf上更改一条线时构建一个新图像。
- 我尝试创建一个脚本来运行每次容器启动并复制配置时,但我没有设法在EC上播放。nginx无法重新加载,要么语法是错误的,要么该文件不可用。
#!/bin/bash cp /efs/nginx.conf /etc/nginx/ nginx -s reload
- 我考虑找出如何创建一个cron作业来运行每x分钟并将我的nginx.conf复制到etc/nginx,但这似乎是一种愚蠢的方法。
- 我做了60个不同的任务定义修订,以找出此CMD环境选项如何在ECS上工作。当然,他们中的大多数都与语法有关,我得到了诸如"无效选项:bash"或"无效选项:/tmp/1.sh"等BACH错误
样品:
1.Command ["cp","/efs/nginx.conf /etc/nginx/"]
2.输入点["nginx","-g","daemon off;"]
命令["cp /efs/nginx.conf /etc/nginx/"]
-
入口点:
["nginx","-g","daemon off"]
命令:["/bin/sh","cp","/efs/nginx.conf/","/etc/nginx/"]
-
命令
["["cp"",""/efs/nginx.conf"",""/etc/nginx/"]","["nginx"",""-g"",""daemon off;"]"]
-
命令
["cp /efs/nginx.conf /etc/nginx/","nginx -g daemon off;"]
-
命令
["cp","/efs/nginx.conf /etc/nginx/","nginx -g daemon off;"]
-
有人知道还是有人已经在ECS上实施了此解决方案?替换/etc/nginx/nginx.conf用媒体体积修改的替换?
预先感谢
解决方案:
正如我在上面的问题上提到的那样,我想将static nginx.conf文件(将变成EFS文件夹)到我的Nginx服务容器中。我的任务定义很简单
FROM nginx
EXPOSE 80
RUN mkdir /etc/nginx/html
通过ECS任务定义I创建一个卷,然后是一个简单的过程,可以正常工作。问题是在入口点字段中,该字段应该包括我的脚本目录和脚本本身。
在ECS任务定义环境入门点字段我放置
sh,-c,/efs/docker-cmd-nginx.sh
我的脚本只是以下
#!/bin/dash
cp /efs/nginx.conf /etc/nginx/ &&
nginx -g "daemon off;"
ps:问题可能是:
- 我没有在守护进程中使用双引号的脚本;一部分,但我在整行Nginx -G守护程序中使用双引号;
- 我的脚本正在尝试重新加载nginx,甚至还没有运行。
- 我尝试将命令分开放在任务的入口点上是错误的,肯定会在语法上,也许也许是策略。