Tag: 亚马逊

AWS Elastic Beanstalk应用程序和静态资产部署隔离

我有我的应用程序代码处理路由和用golang编写的restful API,但是我所有的客户端代码都是用Vue编写的,我希望将这两个代码隔离开来,所以我不必在修改div时部署整个容器。 我期待着将所有的静态内容托pipe在CDN上,但是它有点难以dynamic引用哈希 <!DOCTYPE html> <html> <head> <meta charset=utf-8> <title>Test</title> <link href=/static/css/app.c6d9c9fc12c1dbaee77703a4dd731a8b.css rel=stylesheet> </head> <body> <div id=app> </div> <script type=text/javascript src=/static/js/manifest.c40d98f512f01d44a02f.js> </script> <script type=text/javascript src=/static/js/vendor.94202f7575960a15f341.js> </script> <script type=text/javascript src=/static/js/app.7a2bba27be158abd2c91.js> </script> </body> </html> 我曾经想过从S3前端dynamic拉取,但是,即使我将其caching起来,这也可能是昂贵的。 有什么方法可以绑定AWS EB git钩子并拉到合适的docker容器上?

无法通过S3向Elastic Beanstalk中的Docker进行身份validation

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker_image.html#docker-singlecontainer-dockerrun-privaterepo 按照这里的说明从Elastic Beanstalk连接到私有Docker Hub容器,但它固执地拒绝工作。 这似乎是在Docker 1.12中调用docker login ,生成的文件没有email属性,但听起来像aws期望的那样,所以我创build了一个名为dockercfg.json的文件,如下所示: { "https://index.docker.io/v1/": { "auth": "Y2…Fz", "email": "c…n@gmail.com" } } 我的Dockerrun.aws.json文件的相关部分如下所示: "Authentication": { "Bucket": "elasticbeanstalk-us-west-2-9…4", "Key": "dockercfg.json" }, 我已经将file upload到S3存储桶的根目录。 为什么我仍然得到说Error: image c…6/w…t:23 not found. Check snapshot logs for details. Error: image c…6/w…t:23 not found. Check snapshot logs for details. 我确定这个名字是正确的,如果它是一个公共存储库,这个名字就可以工作。 完整的错误在下面。 我从GitHub与Circle CI部署,如果有所作为,很乐意提供任何其他所需的信息。 INFO: Deploying new version […]

select合适的AWS服务和软件工具

我正在开发一个原型物联网应用程序,它执行以下操作 接收/存储来自传感器的数据。 带有基于Web的IDE的Web应用程序,供用户部署在Docker Containers中执行的简单JavaScript / Python脚本。 来自传感器的数据被传输到这些容器。 用户程序可以使用这些数据来进行分析,监测等。 这些程序的日志在webapp上输出给用户 当前架构和服务 使用一个AWS EC2实例。 我selectEC2是因为我试图弄清楚架构。 Stack是Node.js,RabbitMQ,Express,MySQl,MongoDB和Docker 我对使用AWS IoT和Greengrass等AWS IoT服务不感兴趣 我已经排除了Heroku,因为我正在使用其他AWS服务。 问题和疑虑 我的目标是为一组50个用户提供一个Beta版本的原型开发 (希望别人可以帮助/开发一个产品发布) 尽可能地,我不想花很多时间在服务之间迁移,因为开发产品是关键。 我应该坚持使用EC2还是转到Beanstalk? 如果我坚持EC2,处理中小stream量的最佳方式是什么? 使用一个大的EC2机器或许多小的微型实例? 什么是pipe理容器的好方法? 它是值得使用群体和容器pipe理? 如果我必须使用多个实例呢? 我也有一些小脚本,它们具有web应用程序和其他服务所需要的传感器信息的状态。 如果我移动到多个实例,我怎样才能使这些脚本可用于多台机器? 上述问题也适用于服务器,消息总线,数据库等。 我的目标当然不是​​产品发布。 我想完成产品,展示我有用户谁感兴趣,当然,表明产品的作品! 任何在这方面的帮助将非常感激!

Docker和“OpenSSL库在部署时报告了一个错误”

我通过亚马逊弹性容器服务通过Rust和Rocket提供API。 每当我把对象放到Amazon S3上时,它在本地工作的很好,但是如果在Amazon ECS上部署,我得到这个运行时错误: HttpDispatch(HttpDispatchError { message: "The OpenSSL library reported an error" }) 当我在我的机器上运行Docker镜像时也会发生这种情况。 我在错误发生的地方添加了注释: use super::types::SomeCustomType; use rusoto_core::{DefaultCredentialsProvider, Region, default_tls_client}; use rusoto_s3::{S3, S3Client, GetObjectRequest}; pub fn load_data_from_s3(object_name: String) -> SomeCustomType { let credentials = DefaultCredentialsProvider::new().unwrap(); let client = S3Client::new(default_tls_client().unwrap(), credentials, Region::UsWest2); let mut request = GetObjectRequest::default(); request.bucket = "bucket-name".to_string(); request.key = object_name.to_string(); match […]

Auth0 OWIN API在通过AWS EC2上的Docker Container发布时不validationJWT令牌

我在EC2上托pipe的OWIN Web.API 2不会授权JWT令牌。 我已经在本地testing了这个function,但是一旦我把它发布到托pipe在EC2上的Docker容器上,它就会回应一个401.我正在使用默认的RS256algorithm和这些设置: var domain = Environment.GetEnvironmentVariable("AUTH0_DOMAIN"); var audience = Environment.GetEnvironmentVariable("AUTH0_CLIENT_IDS"); var keyResolver = new OpenIdConnectSigningKeyResolver(domain); appBuilder.UseJwtBearerAuthentication( new JwtBearerAuthenticationOptions { AuthenticationMode = AuthenticationMode.Active, AllowedAudiences = new[] { audience }, TokenValidationParameters = new TokenValidationParameters() { ValidAudience = audience, ValidIssuer = domain, IssuerSigningKeyResolver = (token, securityToken, identifier, parameters) => keyResolver.GetSigningKey(identifier) } }); 我的端点只是说明你的身份validation与否。 [Authorize] [Route("secure")] public […]

使用docker composer在AWS beanstalk上部署docker

我试图在AWS beanstalk上部署多个node.js微服务,并且希望将它们部署在同一个实例上。 这是我第一次部署多个服务,所以有一些失败,我需要有人来帮助我。 所以,我试图首先将它们打包在docker集装箱中。 同时我正在使用dockercomposer php来pipe理这个结构。 它在本地虚拟机上启动并运行,但是当我部署到beanstalk时,遇到了一些问题。 我知道的: 我知道我必须select部署为多容器泊坞窗。 pipe理多个node.js服务的最佳实践是使用docker composer。 我需要为node.js应用程序使用dockerrun.aws.json 。 我需要为该ecs实例创build任务定义。 我遇到问题的地方: 我只能findphp的dockerrun.aws.json和task_definition.json模板,所以我无法validation这两个json文件中的node.jsconfiguration是否处于正确的形状。 看起来像docker-compose.yml , dockerrun.aws.json和task_definition.json正在做类似的工作。 我必须保持task_definition,但我仍然需要dockerrun.aws.json? 我试图在ecs中运行这个任务,但是它立刻停止了。 我怎样才能检查日志的任务? 我有: 在环境中找不到ecs任务定义(或空定义文件) 因为我的任务总是会立即停止。 如果我可以查看日志,那么我可以更容易地进行故障排除。 这是我的task_definition.json : { "requiresAttributes": [], "taskDefinitionArn": "arn:aws:ecs:us-east-1:231440562752:task-definition/ComposerExample:1", "status": "ACTIVE", "revision": 1, "containerDefinitions": [ { "volumesFrom": [], "memory": 100, "extraHosts": null, "dnsServers": null, "disableNetworking": null, "dnsSearchDomains": null, "portMappings": [ { […]

Docker Compose:将不同的服务从docker-compose.yml部署到不同的主机集

比方说,我有一个docker-compose.yml文件,有三种不同的服务(s1,s2,s3)。 然后,如果我部署它们,比如在一个主机上的AWS ECS(举个例子)群集,所有的三个containers都会去那个主机。 如果我缩放群集2主机,那么第二个主机,然后第二个主机也将获得所有三个containers 。 理想情况下,我想为不同的services有不同的 clusters ,以便它们可以独立扩展。 我不想让我的数据库容器与我的backend容器在同一个群集上,因为它们都有不同的扩展需求。 我将如何实现这种与docker构成的行为? Kubernetes提供了这种抽象的概念,但是由于这不是docker的一部分,我想知道如何在docker中开发多服务应用程序,其中每个service (在docker-compose.yml中定义)可以独立调整。 *

如何从一个私人Dockerhub回购自动化docker运行?

我有一个运行Docker的EC2服务器,我想将以下内容添加到User Data以便在服务器启动时,我的私有Dockerhub映像将被拉出/运行,如下所示: #!/bin/bash sudo docker run -p 3333:3333 -d –name Hello myusername/hello 但我不确定如何去authentication,以获得访问私人回购myusername/hello 。 使用Github创build并上传部署密钥,Dockerhub是否提供了类似的部署密钥选项?

如何从Docker Hub私人回购在EC2 ECS上部署Docker容器?

我在一个私人Docker Hub存储库中有一个镜像,我试图在Amazon的Elastic Container Service上部署这个镜像。 似乎有一个很好的Web控制台从公共存储库运行一个容器,但没有私人的。 我已经阅读并尝试了解这方面的文档 ,但我不明白与部署容器有什么关系,因为它声明“Amazon ECS容器代理允许容器实例连接到您的集群”。 作为使用Web控制台的替代方法,我看到提到了设置任务定义。 这听起来像是Web控制台的手动版本。 我怀疑我最好的select是用这种方法,可能在这里的脚本的帮助下。 我在ECS上运行现有映像的最简单方法是托pipe在私有存储库中?

具有Docker和EBS卷的EC2,在初始化期间在容器内安装EBS卷

我实际上试图用Docker实现某些function,但是卡住了,这是我的问题。 我有我的容器托pipe在EC2与我的networking应用程序里面。 我的Web应用程序使用数据库JCR存储库,这基本上是一个文件存储在你想要的。 所以每次我的web应用程序启动,如果存储库不存在,它会创build它,否则它使用现有的。 我目前的docker文件看起来像这个https://gist.github.com/agonist/7cab7358379e9dd6e812 ./chameleon.sh开始只是开始我的web应用程序。 在这个应用程序中,我configuration了存储库文件的位置。 现在我创build了一个EBS卷,并将其挂载到我的EC2实例中。 本卷将专门用于存储存储库。 所以基本上在我的应用程序我configuration我的存储库path/mnt/repository/其中存储库是将包含我的web应用程序创build我的存储库文件的目录。 但是我不知道如何在./chameleon.sh start之前将这个卷装载到我的容器中。 正如我在研究中看到的那样 docker run -v /mnt/repository:/mnt/repository aws_beanstalk/current-app 不能从Dockefile执行。 我还发现了一些关于数据的容器,它与另一个容器共享一个容器,但是如果我必须运行的话,还是一样的问题 sudo docker run -d –volumes-from dbdata 我的容器启动后