Tag: amazon web services

AWS ECS领导者命令(django migrate)

我们目前正在使用AWS Elastic Beanstalk部署我们的Django APP。 在那里我们使用容器命令执行django数据库迁移,我们确保我们只使用“leader_only”限制在一个实例上运行迁移。 我们正在考虑将我们的部署迁移到AWS EC2 Container Service 。 但是,我们无法find一种强制迁移的方法,只有在部署新映像时才能在一个容器上运行迁移。 是否可以在AWS EC2容器服务中configurationleader_only命令?

从Docker容器中检测AWS主机环境

从Docker容器中,我如何检测到我在AWS环境中运行? 我希望相同的容器可以select性地在AWS内启动IF时运行一些AWS命令,但是如果在本地环境中运行,则跳过这些命令。 目前,我认为简单的方法是在AWS中运行时设置一个环境variables。 有另一种方法吗?

如何使用Docker for Mac为Docker awslogs驱动程序提供凭据?

我试图使用docker awslogs驱动程序,并得到以下错误:“docker:来自守护进程的错误响应:无法初始化日志logging驱动程序:NoCredentialProviders:链中没有有效的提供程序。已弃用。 根据这个GitHub的评论 ,我需要为Docker守护进程设置AWS_SHARED_CREDENTIALS_FILE环境variables,但是我不确定在使用Docker for Mac时如何做到这一点。 我用来启动容器的命令是: docker run -d \ –log-driver=awslogs \ –log-opt awslogs-region=us-east-1 \ –log-opt awslogs-group=my-log-group \ my-image 版本信息: Docker for Mac 1.12.1-rc1-beta23 build 11375 OS X El Capitan 10.11.6

在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的问题。 这里通常的机制是什么?