无法将Docker作曲者部署到AWS ECS
尽pipe遵循了大量的教程和指南,包括官方文档,但在试图将我的docker集装箱部署到ECS时,我总是碰壁。
以下是我所做的:
ecs-cli configure --cluster my-cluster ecs-cli up --keypair XXX --capability-iam --size 1 --instance-type t2.micro ecs-cli compose --file docker-compose.staging.yml up
我docker-compose.staging.yml
是
version: '2' services: web: mem_limit: 128m image: nginx:latest ports: - "80:80" - "443:443" volumes: - src:/var/www - vhost.staging.conf:/etc/nginx/conf.d/site.conf - certificates:/etc/nginx/ssl links: - app depends_on: - app app: mem_limit: 128m image: groberts12/php7.1-fpm-base volumes: - src:/var/www
运行compose命令后,我得到:
WARN[0000] Skipping unsupported YAML option... option name=networks WARN[0000] Skipping unsupported YAML option for service... option name=networks service name=app WARN[0000] Skipping unsupported YAML option for service... option name="depends_on" service name=web WARN[0000] Skipping unsupported YAML option for service... option name=networks service name=web INFO[0002] Using ECS task definition TaskDefinition="ecscompose-docker:5" INFO[0002] Starting container... container="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/app" INFO[0002] Starting container... container="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/web" INFO[0002] Describe ECS container status container="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/web" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-docker:5" INFO[0002] Describe ECS container status container="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/app" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-docker:5" INFO[0014] Describe ECS container status container="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/web" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-docker:5" INFO[0014] Describe ECS container status container="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/app" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-docker:5" INFO[0026] Describe ECS container status container="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/web" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-docker:5" INFO[0026] Describe ECS container status container="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/app" desiredStatus=RUNNING lastStatus=PENDING taskDefinition="ecscompose-docker:5" INFO[0032] Stopped container... container="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/web" desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="ecscompose-docker:5" INFO[0032] Stopped container... container="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/app" desiredStatus=STOPPED lastStatus=STOPPED taskDefinition="ecscompose-docker:5"
ecs-cli ps
仁慈地回报:
Name State Ports TaskDefinition xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/web STOPPED ExitCode: 1 xx.xxx.xxx.xxx:443->443/tcp, xx.xxx.xxx.xxx:80->80/tcp ecscompose-docker:5 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/app STOPPED ExitCode: 0 ecscompose-docker:5
以防万一,然后我跑了服务:
ecs-cli compose --file docker-compose.staging.yml service up
这花了一段时间,但终于说完了:
WARN[0000] Skipping unsupported YAML option... option name=networks WARN[0000] Skipping unsupported YAML option for service... option name=networks service name=app WARN[0000] Skipping unsupported YAML option for service... option name="depends_on" service name=web WARN[0000] Skipping unsupported YAML option for service... option name=networks service name=web INFO[0001] Using ECS task definition TaskDefinition="ecscompose-docker:6" INFO[0001] Created an ECS service service=ecscompose-service-docker taskDefinition="ecscompose-docker:6" INFO[0002] Updated ECS service successfully desiredCount=1 serviceName=ecscompose-service-docker INFO[0002] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0032] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0062] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0092] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0122] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0152] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0182] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0212] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0243] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0273] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0303] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0333] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0363] Describe ECS Service status desiredCount=1 runningCount=0 serviceName=ecscompose-service-docker INFO[0378] ECS Service has reached a stable state desiredCount=1 runningCount=1 serviceName=ecscompose-service-docker
但是当再次检查进程列表时,上面的尝试是重复的。
最后连接到容器实例后,我能够查询ecs-agent日志,但是这并没有包含太多的信息,除了:
2017-03-29T15:24:11Z [WARN] Warning, link with no linkalias module="api client" linkName="app" task="ecscompose-docker:6 arn:aws:ecs:eu-west-1:571010915057:task/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, Status: (NONE->RUNNING) Containers: [web (PULLED->RUNNING),app (RUNNING->RUNNING),]" container="web(nginx:latest) (PULLED->RUNNING)"
在Docker上没有任何问题,一切正常,但是对于这个devops游戏的这个部分来说是新的,所以对于什么可能是问题完全混淆了。
有什么build议么?
我将使用terraform来构build您的Amazon ECS集群并使用这些任务和服务来部署Docker容器。 如果你想使用更多的docker兼容的API解决scheme,然后使用docker群。 Docker组合更多的是一个本地testing工具,然后是一个生产环境的编排器。
最终,我不得不使用Elastic Beanstalk Multi-Container环境,它很好地工作。
{ "AWSEBDockerrunVersion": 2, "volumes": [{ "name": "php-app", "host": { "sourcePath": "/var/app/current/src" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/vhost.staging.conf" } }, { "name": "nginx-ssl-certificates", "host": { "sourcePath": "/var/app/current/certificates" } }], "containerDefinitions": [ { "name": "app", "image": "groberts12/php7.1-fpm-base", "environment": [{ "name": "Container", "value": "groberts12/php7.1-fpm-base" }], "essential": true, "memory": 128, "mountPoints": [{ "sourceVolume": "php-app", "containerPath": "/var/www" }] }, { "name": "web", "image": "nginx:latest", "essential": true, "memory": 128, "portMappings": [{ "hostPort": 80, "containerPort": 80 }, { "hostPort": 443, "containerPort": 443 }], "links": [ "app" ], "mountPoints": [{ "sourceVolume": "php-app", "containerPath": "/var/www" }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d/default.conf" }, { "sourceVolume": "nginx-ssl-certificates", "containerPath": "/etc/nginx/ssl" } ] } ] }
{ "AWSEBDockerrunVersion": 2, "volumes": [{ "name": "php-app", "host": { "sourcePath": "/var/app/current/src" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/vhost.staging.conf" } }, { "name": "nginx-ssl-certificates", "host": { "sourcePath": "/var/app/current/certificates" } }], "containerDefinitions": [ { "name": "app", "image": "groberts12/php7.1-fpm-base", "environment": [{ "name": "Container", "value": "groberts12/php7.1-fpm-base" }], "essential": true, "memory": 128, "mountPoints": [{ "sourceVolume": "php-app", "containerPath": "/var/www" }] }, { "name": "web", "image": "nginx:latest", "essential": true, "memory": 128, "portMappings": [{ "hostPort": 80, "containerPort": 80 }, { "hostPort": 443, "containerPort": 443 }], "links": [ "app" ], "mountPoints": [{ "sourceVolume": "php-app", "containerPath": "/var/www" }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d/default.conf" }, { "sourceVolume": "nginx-ssl-certificates", "containerPath": "/etc/nginx/ssl" } ] } ] }
希望这有助于任何人有类似的问题!
- 在Jenkins中构buildDocker镜像(在Docker镜像中) – Cloud docker代理
- 在Windows server 2016 Docker容器上运行部署在Tomcat上的Java war文件
- 为什么要为Docker使用AWS ECS vs. ElasticBeanstalk?
- ECS CloudFormation堆栈始终显示CREATE_PROGRESS
- Kubernetes是否均匀分布在ec2集群中?
- 为什么我的gunicorn Python / Flask工人退出信号术语?
- AWS Elastic Beanstalk应用程序和静态资产部署隔离
- 失败(404错误)通过AWS EBS泊坞窗环境中的Nginx访问Amazon Linux API泊坞窗服务
- Selenium网格与不同主机上的Docker容器
- 如何设置运行Django的AWS Elastic Beanstalk Docker平台?
- 在Elastic Beanstalk上托pipe的Docker化PHP应用程序中出现“python:not found”错误