Tag: 弹性beanstalk

AWS EB,Play框架和Docker:应用程序已经运行

我在AWS Elastic Beanstalk上运行Play 2.2.3 Web应用程序,使用SBT生成Docker镜像。 从EBpipe理界面上传图像通常是可行的,但有时会进入一种状态,我一直得到以下错误: Docker容器在Thu Nov 27 10:05:37 UTC 2014意外退出:Play服务器进程ID是1此应用程序已经运行(或删除/ opt / docker / RUNNING_PID文件)。 并且部署失败。 除了终止环境并重新设置以外,我无法做出任何其他的事情。 我怎样才能避免环境进入这种状态?

Dockercachinggradle依赖

我试图部署我们的Java Web应用程序来使用docker来弹性beanstalk,这个想法是能够在本地运行容器进行开发和testing,并最终将其推到使用git的生产。 我创build了一个安装了tomcat8和java8的基础镜像,执行gradle build的镜像inheritance了这个基础镜像,加速了构build过程。 除了事实上,使用docker构build的inheritance应用程序容器似乎不会cachinggradle依赖关系,它每次都会下载,包括gradlew。 我们使用以下命令构build我们的Web应用程序: ./gradlew war 有什么办法可以caching~/.gradle的文件,这将大大加速我的构build 这对于beanstalk来说并不是什么大问题,但是对于开发人员来说,这是一个很大的问题,因为这需要很多时间,正如你可以想象的那样 基础图像dockerfile: FROM phusion/baseimage EXPOSE 8080 RUN apt-get update RUN add-apt-repository ppa:webupd8team/java RUN apt-get update RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections RUN apt-get -y install oracle-java8-installer RUN java -version ENV TOMCAT_VERSION 8.0.9 RUN wget –quiet –no-cookies http://archive.apache.org/dist/tomcat/tomcat-8/v${TOMCAT_VERSION}/bin/apache-tomcat-${TOMCAT_VERSION}.tar.gz -O /tmp/catalina.tar.gz # Unpack RUN tar […]

从Docker Elastic Beanstalk容器中获取Elasticache地址

我正在尝试有弹性beanstalk自动提供一个elasticache实例。 我想弄清楚如何我可以在我的docker环境中在运行时访问caching实例的地址。 我正在运行python(在gevent上)。 这是我的.ebextensions中的configuration文件: Resources: sslSecurityGroupIngress: Type: AWS::EC2::SecurityGroupIngress Properties: GroupName: {Ref : AWSEBSecurityGroup} IpProtocol: tcp ToPort: 443 FromPort: 443 CidrIp: 0.0.0.0/0 MyCacheSecurityGroup: Type: "AWS::EC2::SecurityGroup" Properties: GroupDescription: "Lock cache down to webserver access only" SecurityGroupIngress : – IpProtocol : "tcp" FromPort : Fn::GetOptionSetting: OptionName : "CachePort" DefaultValue: "6379" ToPort : Fn::GetOptionSetting: OptionName : "CachePort" DefaultValue: "6379" […]

在EC2上的Docker,dockerfile中的RUN命令不能读取环境variables

我在AWS上有两个弹性beanstalk环境:开发和生产。 我在每个实例上运行一个glassfish服务器,并且要求在生产和开发环境中可以部署相同的应用程序包,而不需要两个不同的.EAR文件。这两个实例大小不同:dev有一个微型实例生产有一个中等的实例,因此我需要为glassfish部署两个不同的configuration文件,每个环境一个。 主要的问题是该文件必须在服务器启动之前在glassfish config目录中,因此我认为在创build容器时可以更好地移动它。 当然,每个环境都使用docker容器来托pipeglassfish实例,所以我首先想到的是为elastic-beanstalkconfiguration一个环境variables。 在这种情况下 ypenvironment = dev 为开发环境和 ypenvironment = pro 为生产环境。 然后在我的DOCKERFILE中,我把这个语句放在RUN命令中: RUN if [ "$ypenvironment"="pro" ] ; then \ mv –force /var/app/GF_domain.xml /usr/local/glassfish/glassfish/domains/domain1/config/domain.xml ; \ elif [ "$ypenvironment"="dev" ] ; then \ mv –force /var/app/GF_domain.xml.dev /usr/local/glassfish/glassfish/domains/domain1/config/domain.xml ; \ fi 不幸的是,当启动完成后,两个GF_domain文件仍然在var/app 。 然后我发现RUN命令在容器满载之前运行了一些东西,可能缺less弹性beanstalk注入的variables。 所以我试图将代码移动到ENTRYPOINT指令。 再次运气,容器启动失败。 也试过了 ENTRYPOINT ["command", "param"] 语法,但它没有工作给一个 System error: […]

在Dockerrun源码包中部署AWS Elastic Beanstalk Docker部署中的ebextensionsconfiguration的位置?

我有困难让我的docker弹性beanstalk部署来读取我的.ebextensions / setup.config文件。 eb环境configuration的文档说: 您可以在源包中包含一个或多个configuration文件。 必须使用扩展名.config(例如myapp.config)来命名configuration文件,并将其放在源包中的.ebextensions顶级目录中。 然而,对于Docker来说,源代码包不是.zip或.war文件,而是一个.json文件,例如文档说创build一个Dockerrun.aws.json文件 – 它看起来就像源代码包? 在创build一个版本的应用程序时,我将一个自定义的Dockerrun-$VERSION.aws.jsonfile upload到s3,运行如下所示(其中$APP是版本化的dockerrun json文件): aws elasticbeanstalk create-application-version \ –application-name $APP_NAME \ –version-label $VERSION \ –source-bundle S3Bucket=$S3_BUCKET,S3Key=$S3_PATH/$APP 那么…当“bundle”只是一个结束构build容器的json文件时,如何在源包的顶级目录中find.ebextensions目录? (我的第一个尝试就是把它放在项目的根目录中,但是这不起作用。)

运行多容器Docker的AWS BeanStalk环境无法启动Health:Severe

我正在尝试启动运行多容器Docker的AWS BeanStalk环境,但是会失败,并显示以下事件列表: 2016-01-18 16:58:57 UTC+0100 WARN Removed instance [i-a7162d2c] from your environment due to a EC2 health check failure. 2016-01-18 16:57:57 UTC+0100 WARN Environment health has transitioned from Degraded to Severe. None of the instances are sending data. 2016-01-18 16:47:58 UTC+0100 WARN Environment health has transitioned from Pending to Degraded. Command is executing on all […]

如何在Elastic Beanstalk多容器docker上使用fluentd日志驱动程序

我试图用下面的Dockerrun.aws.json来使用fluentd日志驱动程序, { “AWSEBDockerrunVersion”:2, “containerDefinitions”:[ { “name”:“apache”, “image”:“php:5.6-apache”, “必不可less”:真, “记忆”:128, “portMappings”:[ { “hostPort”:80, “containerPort”:80 } ] “logConfiguration”:{ “logDriver”:“fluentd”, “选项”:{ “fluentd-address”:“127.0.0.1:24224” } } } ] } 但发生以下错误。 ERROR: Encountered error starting new ECS task: {cancel the command. "failures": [ { "reason": "ATTRIBUTE", "arn": "arn:aws:ecs:ap-northeast-1:000000000000:container-instance/00000000-0000-0000-0000-000000000000" } ], "tasks": [] } ERROR: Failed to start ECS task after retrying […]

使用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": [ { […]

部署后,AWS EB Deploy显示缺lessDockerrun.aws.json

我试图将我的应用程序部署到Elastic Beanstalk(运行docker),但在部署过程中总是失败,如下所示: Activity execution failed, because: cat: /var/app/current/Dockerrun.aws.json: No such file or directory cat: /var/app/current/Dockerrun.aws.json: No such file or directory 2ba4cc7f9cb0a66db0ab1be8736ba96bffbb1c96a219cf5e888f99a964ae4f2a 据我所知Dockerrun.aws.josn文件是不需要的,如果Dockerfile存在,我不明白我们应该有它的任何理由。 我的Dockerfile是这样的: FROM ubuntu:16.04 # create source directory RUN rm -rf /var/www RUN mkdir /var/www # update and upgrade ubuntu RUN apt-get update && apt-get upgrade -y # install nginx RUN apt-get install -y […]

在AWS Elastic Beanstalk应用程序中运行Tomcat Docker时进行端口转发

我有一个运行在AWS Elastic Beanstalk (EB)上的docker容器内的Tomcat 7.0 webapp(我在这里跟着教程)。 当我浏览到我的EBurlmyapplication.elasticbeanstalk.com时 ,我得到了由Nginx服务的502 Bad Gateway 。 所以立即清楚,我的端口80没有转发到我的容器。 当我浏览到myapplication.elasticbeanstalk.com:8888 (我在Dockerfile中公开的另一个端口)时,连接被拒绝( ERR_CONNECTION_REFUSED )。 所以我SSH到AWS实例,并检查docker日志,这表明我的Tomcat服务器已成功启动,但显然还没有处理任何请求。 有没有人有任何想法我的端口8888似乎没有转发到我的容器? 执行命令(在AWS实例上): sudo docker ps -a 得到: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c353e236da7a aws_beanstalk/current-app:latest "catalina.sh run" 28 minutes ago Up 13 minutes 80/tcp, 8080/tcp, 8888/tcp sharp_leakey 显示端口80,8080和8888在docker集装箱上打开。 我的Dockerfile非常简单: FROM tomcat:7.0 EXPOSE 8080 EXPOSE 8888 EXPOSE […]