簡體   English   中英

無法將Docker composer部署到AWS ECS

[英]Unable to deploy Docker composer to AWS ECS

盡管遵循了包括官方文檔在內的大量教程和指南,但在嘗試將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游戲的這一部分來說是新手,因此對於可能出現的問題完全感到困惑。

有什么建議么?

我將使用terraform構建您的Amazon ECS集群,並使用任務和服務來部署Docker容器。 如果您想使用與Docker兼容的API解決方案,請使用docker swarm。 Docker compose更像是本地測試工具,而不是生產環境的協調器。

最終,我不得不使用運行良好的Elastic Beanstalk多容器環境。

{
  "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"
        }
      ]
    }
  ]
}

希望這對遇到類似問題的人有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM