Tag: amazon ecs

使用AWS开发人员工具构buildDocker镜像

我正在尝试仅使用AWS构build一个简单的应用程序(只有在可能的情况下才使用自由层)。 目前的挑战是持续整合。 在AWS CodeCommit中有一个简单的存储库,其中包含代表我的基础映像的DockerFile。 此基本映像稍后将在部署到AWS ECS的不同应用程序中使用。 1)我怎样才能自动使用AWS堆栈(没有Jenkins等),在每次提交时构build我的基础Docker镜像,然后将其部署到AWS ECR? 2)对于构build在该图像之上的应用程序,如何在每次提交时构build应用程序泊坞窗镜像,更新ECS任务以指定最新的标记,然后重新运行任务? 谢谢!

如何使容器在ECS中相互通信而无需链接和端口映射?

我没有find解决scheme,这两个容器在单独的任务定义可以相互沟通。 因此,我按照答案把两个容器连接起来,在相同的任务定义中运行良好。首先感谢答案。 但是,当我阅读ECS文档时,我发现以下段落使我感到困惑: 在单个容器实例上并置的容器可能能够相互通信而不需要链接或主机端口映射。 使用安全组和VPC设置在容器实例上实现networking隔离。 但我无法find进一步的文件如何实现这一点。 我知道,docker社区尝试使用 – –network和弃用 – –link 。 我不确定AWS是否进行了一些更改,以便以某种方式启用这些更改。 有人可以帮助我了解如何实现这一目标? 由于容器名称和IP始终是由ECSdynamic分配的,因此如果在不使用链接和端口映射的不同任务定义中,如何从一个容器与另一个容器进行通信?

如何在ECS Docker中创build成功应用程序部署的通知?

我在ECS Docker Container中部署了一个基于PHP的基于Web的应用程序。 我使用Travis将应用程序部署到ECS。 在Docker中成功部署应用程序后,通知(松弛)是很好的。 EC2实例部署通知(通过Auto-Scaling Group – SNS)是不够的,因为它在Docker中仍然需要几分钟的处理。 这个想法可能就像这样https://aws.amazon.com/blogs/aws/new-slack-integration-blueprints-for-aws-lambda/ 只需将Auto Scaling组更改为Docker即可 。 但我不知道如何做到这一点。 一如既往,任何帮助非常感谢!

运行在Docker容器中的Node.js进程在内存不足时不会退出或抛出

我最近偶然发现了一个有趣的问题:我有一个Express Node.js应用程序,我正在使用Docker镜像将其部署到AWS ECS。 但是,它正确部署,运行状况检查失败,检查日志后,我发现该过程在Express初始化过程中无限期挂起而不会出现任何错误。 起初我以为这是由于某些networkingmiss-configuration导致的,它阻止了HTTP端口启动一个监听器的过程,但经过非常繁琐的检查之后,我注意到,默认的内存限制已经到位, 50 MB的内存,当进程实际上需要多一点。 增加内存限制后,它开始正常工作。 为什么它挂在没有任何错误。 当发生这种情况时,Node进程是否应该退出并报错? 今后如何防止这样的问题呢? 也就是说,当这种情况发生时,我希望我的stream程被有意义的错误终止。 谢谢!

AWS ECS Docker Timeout上的Selenium Mochatesting

问题:在 NodeJS平台上运行并在AWS ECS上运行的Selenuim Webdriver驱动的通过Mocha执行的UItesting对于例行超时(超时= 120000 ms,即2分钟)而言速度很慢。 build立: 我在AWS ECS上有一个集群。 群集有3个m4.xlarge实例,所以CPU /内存不是问题。 此外,EC2实例度量标准显示,即使运行testing,CPU /内存使用率也<1%。 每个容器都使用以下JSON定义: { "requiresAttributes": [ { "value": null, "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18", "targetId": null, "targetType": null }, { "value": null, "name": "com.amazonaws.ecs.capability.ecr-auth", "targetId": null, "targetType": null } ], "taskDefinitionArn": "someDefinition", "networkMode": "host", "status": "ACTIVE", "revision": 23, "taskRoleArn": null, "containerDefinitions": [ { "volumesFrom": [], "memory": 400, […]

ECS挂载卷到nginx容器

我正在尝试设置ECS以运行我的php / nginx docker应用程序。 它使用这个docker-compose.yml文件在本地工作: version: '2' services: nginx: image: NGINX-IMAGE ports: – 80:80 links: – php volumes_from: – php environment: APP_SERVER_NAME: <ip> php: image: PHP-IMAGE ports: – 9000:9000 volumes: – /var/www/html 问题是我不能使用ECS来实现这个function。 我不知道如何创buildWeb数据卷,并让nginx使用volumes_from来volumes_from它。 我正在尝试使用此JSON创build卷: volumes='[ { "name": "webdata", "host": { "sourcePath": "/var/www/html" } } ]' 然后在我的容器定义的PHP容器,我补充说: "mountPoints": [ { "sourceVolume": "webdata", "containerPath": "/var/www/html", "readOnly": […]

Docker:用于开发和生产环境的不同的ENVvariables

我有我在Amazon ECS上部署的Docker容器。 Docker容器运行supervisord,然后运行3个不同的程序。 当然,我想使用不同的环境variables来进行本地开发和生产,以区分API密钥,API端点等等。 什么是这样做的好方法? 这是我应该在Dockerfile,Amazon ECS或supervisord conf文件中设置的东西吗?

AWS Linux中的ASP.NETexception

当我在Windows中运行ASP.NET 5时,它会引发exception,我可以在Windows事件查看器中查看条目。 我已经将我的站点部署在一个Docker容器中,以便在Amazon的ECS中运行,所以它现在在Linux中运行。 我应该在Linux的哪个位置查看这些条目? 我正在尝试在与RDS进行通信时解决错误,但是只有在我正在查看Linux时,才会发生错误,而不是在Visual Studiodebugging器中运行该站点时发生。

通过API在ECS上安装目录?

这可能是一个serverfault的事情,但因为我试图通过API或以编程方式做到这一点,我会假设问题是为StackOverflow,直到我被告知,否则。 我试图在我正在开发的应用程序中用ECS取代Deis。 目前,应用程序本身能够在Deis上启动新的应用程序(运行Web应用程序的Docker容器),方法是使用部署密钥从我们的私人git repo中检查源代码,然后将所述代码推送到Deis端点(然后处理创build旋转docker集装箱等)。 尽pipe如此,戴斯还是相当不错的,所以我正在探索取代它。 ECS似乎是一个很好的select,通过使用Buildstep容器,我已经使用docker在命令行从我的私有存储库成功运行了类似heroku的代码部署。 为此,我必须将我的ssh密钥目录映射到容器中,作为运行命令的一部分: docker run -d -v ~/.ssh:/root/.ssh -p 3000:3000 -e PORT=3000 -e GIT_REPO=private-repo-url.git tutum/buildstep /start web 除了两件事之外,大多数都很好。 首先是我不知道调用任务创buildAPI时执行此操作的最佳方法。 根据我的理解,在ECS上注册一个带有卷和挂载点的任务是可能的,但是这个卷需要是运行任务的ECS集群主机上的一个卷(我可以使用这个确认),这不是在任务注册时间已知。 我能find的唯一例子是使用本地文件path。 所以,第一个问题: 我如何将我的部署密钥注入到容器中,或者可靠地映射容器可以在启动时附加的“keys”目录 另一部分是不太值得关注的,但理想情况下,一旦git repo pull完成,键不会停留在每个容器上。 我认为最简洁的方式来做这将取决于我如何完成第一个问题,但第二个问题是如何清理我的密钥,以便他们不会留在容器部署完成后

启动Docker容器的ECS Agent未完成。 手动启动成功

我遵循ECS入门教程,但ECS代理没有启动容器。 当我在同一个实例上手动启动图像时,它会正常启动。 该图像是一个Spring Boot Web应用程序,其中一个端点位于/上,返回string“Hello world !!”。 容器在本地运行良好,并且在我创build的CentOS EC2实例上运行良好。 当我在CentOS EC2实例上运行Docker镜像时,端点是公开的。 ECS实例具有由向导创build的安全组,并已打开端口80。 我添加了端口22进行SSH访问。 当我SSH进入ECS实例查看我的容器的Docker日志,它看起来像是在入口点执行过程中挂起。 以下是挂起实例的Docker日志: [ec2-user@ip-10-0-0-156 ~]$ docker logs –tail 100 107d4cf04dd8 . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ […]