Tag: amazon web services

在Elastic Beanstalk的Docker中部署时间命令

我有一个在Docker中运行的Django服务,我将其部署到AWS Elastic Beanstalk。 我想在部署时运行我的数据库迁移 如果我将EB部署为“Python项目”,则可以在.ebextensions使用以下.ebextensions : $ cat .ebextensions/01run.config container_commands: 01migrate: command: "python manage.py migrate –noinput" leader_only: true 但是, container_commands是EC2实例 – 它在Docker容器中 ,我有我的代码等。 我已经看过的东西 我不能将它添加到我的Dockerfile ,因为应用迁移是关于在附加的RDS实例上运行(由环境提供的) – 而不是真正的“构buildDocker镜像的一部分” 似乎没有什么有用的,我可以添加到Dockerrun.aws.json 到目前为止我已经确定的Hacky选项 我也许可以识别我的container_commands的Docker图像名称,然后执行docker run -ti $container-name python manage.py migrate等,但不知道如何和感觉非常哈克 我可以手工运行迁移 我可以用CMD $scriptreplaceCMD gunicorn $etc ,其中$script应用迁移,然后启动gunicorn。 这是我迄今为止确定的最不可怕的事情,以及我将要做的一个权宜之计。 这意味着“每次启动实例时都会尝试应用迁移”,这不会让我感到舒适和快乐。 想法非常欢迎,请!

弹性beanstalk泊坞窗应用程序不部署时更新

我有一个Dockerfile / elastic-beanstalk应用程序,它从s3中提取当前应用程序版本的tarball并启动它。 这在我第一次部署时效果很好; Docker容器被构build,应用程序启动并正确运行。 问题出在我对应用程序进行更改之后,重新将tarball上传到s3并运行eb deploy 。 $ eb deploy INFO: Environment update is starting. INFO: Deploying new version to instance(s). INFO: Successfully built aws_beanstalk/staging-app INFO: Successfully pulled yadayada/blahblah:latest INFO: Docker container 06608fa37b2c is running aws_beanstalk/current-app. INFO: New application version was deployed to running EC2 instances. INFO: Environment update completed successfully. 但该应用程序尚未更新*.elasticbeanstalk.com 。 我猜,因为Dockerfile没有改变,docker不重build容器(并拉动最新的应用程序tarball)。 […]

Docker Build不能find点子

尝试通过AWS am遵循一些简单的Docker教程,并得到以下错误: > docker build -t my-app-image . Sending build context to Docker daemon 94.49 MB Step 1 : FROM amazon/aws-eb-python:3.4.2-onbuild-3.5.1 # Executing 2 build triggers… Step 1 : ADD . /var/app —> Using cache Step 1 : RUN if [ -f /var/app/requirements.txt ]; then /var/app/bin/pip install -r /var/app/requirements.txt; fi —> Running in d48860787e63 /bin/sh: […]

是否有可能在Amazon elasticbeanstalk上启动特权的Docker容器?

我已经尝试了许多不同的方法,在我的任务定义中包含特权标志,这是根据任务定义文档: http : //docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_security 我也在亚马逊网站上发现了论坛post: https ://forums.aws.amazon.com/thread.jspa?threadID=180014&tstart =0& messageID=687696#687696亚马逊员工“ChrisB @ AWS”说:“ECS现在支持特权模式“。 我已经在任务定义中使用上述特权键/ val在ECS上成功启动了特权容器,并且可以在ec2主机上使用docker命令进行确认。 但是,同一个任务定义节在弹性beanstalk多容器解决scheme堆栈主机上不能certificate是成功的。 我在亚马逊论坛上看到一个约为一年的旧post,具体是关于elasticbeanstalk的支持: https ://forums.aws.amazon.com/thread.jspa?messageID = 687694 & #687694亚马逊员工“DhanviK @ AWS”说:“ EB还没有干净地支持Docker执行的特权模式,我们会在继续发布Docker容器的下一个版本时考虑到这一点。 我也在github上看到了一些从github上面的旧的讨论: https : //github.com/awslabs/eb-docker-virtual-hosting/issues/1他们说在ECS上不支持。 但是很显然,按照上面的实验,它已经在这一点上得到了实施。 那么给了什么? 如果EB多容器解决scheme栈只是简单地包装ECS服务,为什么从elasticbeanstalk传递的ecs代理不能接受我的特权标志? elasticbeanstalk是否简单地删除标志,然后才能到达ecs代理? 如果这是怪人。 任何人都可以解释这一点吗? 更新:我发现这个问题属于单容器elasticbeanstalk解决scheme堆栈。 这不是我正在使用的。 我正在使用多容器解决scheme堆栈。 我如何在AWS Elastic Beanstalk中使用非默认运行参数运行Docker容器?

运行多容器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 nfs4

我被困在一个Docker容器中,在Elastic Beanstalk上运行,访问一个nfs4共享。 Netshare在运行Docker容器的EC2实例上运行。 在实例上手动安装nfs共享,我可以毫无问题地访问EC2实例上的共享。 但是,当我运行一个容器,试图挂载nfs4卷时,这些文件不会出现在容器内。 我这样做 首先,启动Docker主机上的netshare守护进程: sudo ./docker-volume-netshare nfs INFO[0000] == docker-volume-netshare :: Version: 0.18 – Built: 2016-05-27T20:14:07-07:00 == INFO[0000] Starting NFS Version 4 :: options: '' 然后,在Docker主机上,启动Docker容器。 使用-v创build挂载nfs4共享的卷: sudo docker run –volume-driver=nfs -v ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/home/ec2-user/nfs-share/templates:/home/ec2-user/xxx -ti aws_beanstalk/current-app /bin/bash root@0a0c3de8a97e:/usr/src/app# 根据netshare守护进程,这有效: INFO[0353] Mounting NFS volume ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:/home/ec2-user/nfs-share/templates on /var/lib/docker-volumes/netshare/nfs/ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/home/ec2-user/nfs-share/templates 因此,我尝试在新启动的容器中列出/home/ec2-user/xxx的内容 – 但它是空的? root@0a0c3de8a97e:/usr/src/app# ls /home/ec2-user/xxx/ root@0a0c3de8a97e:/usr/src/app# […]

从Travis部署Docker到AWS(或任何其他支持SSH的服务器)

我的部署过程中缺less一个重要的部分。 将代码推送到服务器。 我正在敲我的头是否要: 1 – 在Travis上创build/构buildDocker镜像,然后以某种方式将其推送到AWS 要么 2 – 尝试SSH(从Travis脚本)到我的AWS,并在那里运行一个命令集,包括Docker镜像的构build和初始化。 我明确地怀疑,我看到上面提出的两个解决scheme的问题。 这里通常的机制是什么?

Docker随机端口和AWS Elastic Load Balancer

我试图通过(在CoreOS机器上)在AWS上托pipe一个Docker Swarm集群,它将为每个应用程序运行多个应用程序和负载平衡。 有没有办法将应用程序从随机端口分组到Elastic Load Balancer(ELB)? 当我手动尝试它时,ELB只会缝合在特定端口上运行的容器。 相反,我想要一个ELB的网格式反向代理。

如何向AWS ECS任务定义提供环境variables?

在ECS的任务定义中,我提供的环境variables如下: 键为HOST_NAME,价值为something.cloud.com 在我的本地我使用这个docker运行命令,我可以通过我的envvariables,但通过任务定义variables不被传递给容器。 这个docker run命令在本地工作,如何在AWS ECS的任务定义中进行设置: docker运行-e HOST_NAME = something.cloud.com sid:最新

使用Elastic Beanstalk在AWS上转到Web应用程序,不会在日志中显示输出

这是一个深入的问题,所以我会尽力解释它。 我在Go中构build了一个小的API服务,我试图使用相对较新的AWS Elastic Beanstalk Docker 支持部署到AWS。 这就是我所做的(代码全部是开源的,所以如果你愿意的话,你可以按照下面的步骤): $ git clone https://github.com/rdegges/ipify-api.git $ cd ipify-api $ git fetch origin aws:aws $ git checkout aws $ eb init $ eb create $ eb deploy 这将使用弹性beanstalk创build一个新的应用程序(与docker),并部署它。 如果我然后运行eb open我的web应用程序,我会看到我的公共IP地址(这是正确的行为),所以我知道我的应用程序正在运行/function。 现在,在我的源代码中,我有几行debugging输出: fmt.Println("WOOOOOOOOOOOO") 上面的语句只是打印“WOO …”到控制台。 每次发出新的请求时都会执行此操作。 不幸的是,当我运行eb logs来查看我的实例日志时,这个debugging行从来没有出现 – 我不明白为什么。 我试过打印到STDERR,打印到STDOUT等 – 但我绝对不能得到任何输出。 我search了互联网寻找解决scheme,但还没有find任何解决scheme。