我在通过AWS ECS上的psycopg2进行数据库连接时遇到问题。 我有一个应用程序容器和一个数据库容器。 容器被链接。 该应用程序有一个入口点脚本,在启动应用程序服务器之前检查数据库是否已经启动。 $ until psql -h "$DB_HOST" -U "$DB_USER" -c '' && >&2 echo "Postgres is up"; do >&2 echo "Postgres is unavailable – sleeping" sleep 1 done > Is the server running on host "db" (172.17.0.3) and accepting > TCP/IP connections on port 5432? > Postgres is unavailable – sleeping > […]
当我尝试在ECS中运行我的容器时,出现错误 CannotStartContainerError:API错误(404):无效的标头字段值“oci运行时错误:container_linux.go:247:启动容器进程导致\”exec:\\“npm \\”:可执行文件找不到$ PATH \“\ n “ 这个容器的基础是node:6.7.0-wheezy,所以我不知道它到底能不能findnpm。 任何想法,我可能会在这里失踪?
我努力让我的node.js容器在ECS上运行。 当我用Docker组合本地运行它时,它运行良好,但在ECS上它运行2-3分钟,并处理一些连接(负载平衡器中的2-3次健康检查),然后closures。 我无法弄清楚为什么。 我的Dockerfile – FROM node:6.10 RUN npm install -g nodemon \ && npm install forever-monitor \ winston \ express-winston RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app/ RUN npm install COPY . /usr/src/app EXPOSE 3000 CMD [ "npm", "start" ] 然后在我的package.json中 – { … "main": "forever.js", "dependencies": { "mongodb": "~2.0", "abbajs": ">=0.1.4", […]
所以这就是我想要做的: 链接到Nginx容器 – >运行Puma的Rails容器 使用docker-compose,这个解决scheme效果很好。 我可以启动这两个容器,NGINX容器可以使用volumes_from访问链接容器中的卷。 首先,Dockerfile for Rails的相关位: ENV RAILS_ROOT /www/apps/myapp RUN mkdir -p $RAILS_ROOT WORKDIR $RAILS_ROOT …. lots of files get put in their proper places …. EXPOSE 3000 VOLUME [/www/apps/myapp/] CMD puma -C config/puma.rb Nginx的configuration是非常基本的,相关的部分在这里: ENV RAILS_ROOT /www/apps/myapp # Set our working directory inside the image WORKDIR $RAILS_ROOT EXPOSE 80 EXPOSE 443 […]
所以这就是我想要做的: 链接到Nginx容器 – >运行Puma的Rails容器 使用docker-compose,这个解决scheme效果很好。 我可以启动这两个容器,NGINX容器可以访问链接容器中端口3000上运行的服务。 不幸的是,在将其转移到AWS ECS时,我一直在处理很多难题。 首先,Dockerfile for Rails的相关位: ENV RAILS_ROOT /www/apps/myapp RUN mkdir -p $RAILS_ROOT WORKDIR $RAILS_ROOT …. lots of files get put in their proper places …. EXPOSE 3000 VOLUME [/www/apps/myapp/] CMD puma -C config/puma.rb' 我证实,美洲狮是按预期开始的,似乎是在3000端口上服务于tcpstream量。 我的nginxconfiguration的相关部分: upstream puma { fail_timeout=0; server myapp:3000; } server { listen 80 default deferred; server_name […]
我有2个容器,一个用于nodejs应用程序,另一个用于mongodb。 我有2个任务定义,每个都有一个,问题是,我如何设法让Nodejs应用程序看到mongodb应用程序而不使mongodb容器公开?现在,我只能设法这样做,使在线端口27017但我需要隐藏它,只能使它在同一networking上可访问(这种情况是相同的机器)
我正在使用ECS来部署我的laravel网站,没有负载均衡器,只有一个ec2实例,会话由elasticCache redis和phpredis来提供。 每次我用ecs-cli部署我的应用程序后,所有用户都将从我的网站注销。 我已经安装了phpredis,并在laravelconfiguration文件中设置持久性。 感谢您的build议。 对不起,英语不好。
我已经使用Amazon ECS在应用程序负载平衡器后面部署了一个redis容器。 看起来健康检查失败,虽然容器正在运行,并准备接受连接。 这似乎是失败的,因为健康检查是HTTP,并且redis当然不是一个http服务器。 # Possible SECURITY ATTACK detected. It looks like somebody is sending POST or Host: commands to Redis. This is likely due to an attacker attempting to use Cross Protocol Scripting to compromise your Redis instance. Connection aborted. 很公平。 经典的负载平衡器我认为会很好,因为我可以明确地ping通TCP。 用ALB使用redis是可行的吗?
我目前正在对我的微服务进行dockerizing。 目前他们在ec2上主持,我打算把他们移到ecs。 我的问题是关于我使用zookeeper的服务发现。 我的动物园pipe理员也在ec2上。 我必须dockerize动物园pipe理员,并将其移动到我的dockerized微服务工作? 或者,我的dockerized ecs上的微服务仍然可以在ec2上使用zookeeper进行发现? 文档不是很直观,所以想就此提出一些build议。
AWS ECS中的任务定义支持指定日志驱动程序。 aws日志驱动程序允许指定日志组,区域和stream的前缀。 当来自不同容器的日志被发送到指定的日志组中的不同stream时,这可以很好地工作。 应该怎么做,从单个容器logging多个日志到单独的日志stream? 例如,要将nginx docker的访问日志和错误日志传递到独立的cloudwatch日志stream/日志组。