2017-05-24 69 views
1

我有一個任務定義,看起來像這樣:ECS:環境變量設置任務,但不存在於容器

> aws ecs describe-task-definition --task-definition ruby-on-rails-test 
{ 
    "taskDefinition": { 
     "status": "ACTIVE", 
     "networkMode": "bridge", 
     "family": "ruby-on-rails-test", 
     "placementConstraints": [], 
     "requiresAttributes": [ 
      { 
       "name": "com.amazonaws.ecs.capability.ecr-auth" 
      }, 
      { 
       "name": "com.amazonaws.ecs.capability.docker-remote-api.1.21" 
      } 
     ], 
     "volumes": [ 
      { 
       "host": { 
        "sourcePath": "/opt/cf/rails-app/public/" 
       }, 
       "name": "ruby-on-rails-public-volume" 
      } 
     ], 
     "taskDefinitionArn": "arn:aws:ecs:us-east-1:accountId:task-definition/ruby-on-rails-test:5", 
     "containerDefinitions": [ 
      { 
       "memoryReservation": 1024, 
       "environment": [ 
        { 
         "name": "DATABASE_HOSTNAME", 
         "value": "hostname" 
        }, 
        { 
         "name": "PUMA_WORKERS", 
         "value": "2" 
        }, 
        { 
         "name": "RAILS_ENV", 
         "value": "staging" 
        }, 
        { 
         "name": "DATABASE_NAME", 
         "value": "ruby-on-rails" 
        }, 
        { 
         "name": "DEBIAN_FRONTEND", 
         "value": "noninteractive" 
        }, 
        { 
         "name": "PORT", 
         "value": "8080" 
        }, 
        { 
         "name": "LANG", 
         "value": "en_US.UTF-8" 
        }, 
        { 
         "name": "DATABASE_PASSWORD", 
         "value": "cf" 
        }, 
        { 
         "name": "DATABASE_USER", 
         "value": "cf" 
        }, 
        { 
         "name": "PUMA_MAX_THREADS", 
         "value": "6" 
        } 
       ], 
       "name": "ruby-on-rails-test", 
       "mountPoints": [ 
        { 
         "sourceVolume": "ruby-on-rails-public-volume", 
         "containerPath": "/opt/cf/rails-app/public/" 
        } 
       ], 
       "image": "accountId.dkr.ecr.us-east-1.amazonaws.com/cf/rails:latest", 
       "cpu": 1024, 
       "portMappings": [ 
        { 
         "protocol": "tcp", 
         "containerPort": 8080, 
         "hostPort": 8080 
        } 
       ], 
       "command": [ 
        "puma", 
        "-C", 
        "config/puma.rb" 
       ], 
       "essential": true, 
       "volumesFrom": [] 
      } 
     ], 
     "revision": 5 
    } 
} 

當容器啓動時,環境變量沒有設置。我從ecs容器中運行以下命令,從容器啓動失敗

[[email protected] docker]# docker run --name 46485594ffc4 accountId.dkr.ecr.us-east-1.amazonaws.com/ cf/rails:latest env 
PATH=/usr/local/bundle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
HOSTNAME=0e0656e4e84c 
RUBY_MAJOR=2.3 
RUBY_VERSION=2.3.4 
RUBY_DOWNLOAD_SHA256=341cd9032e9fd17c452ed8562a8d43f7e45bfe05e411d0d7d627751dd82c578c 
RUBYGEMS_VERSION=2.6.12 
BUNDLER_VERSION=1.15.0 
GEM_HOME=/usr/local/bundle 
BUNDLE_PATH=/usr/local/bundle 
BUNDLE_BIN=/usr/local/bundle/bin 
BUNDLE_SILENCE_ROOT_WARNING=1 
BUNDLE_APP_CONFIG=/usr/local/bundle 
APP_HOME=/opt/cf/rails-app 
HOME=/root 

任何想法爲什麼變量沒有被設置?

在此先感謝。

+0

什麼是「46485594ffc4」? – Robert

回答

1

當你自己拍下一張圖片時,你錯過了AWS用來運行容器的漏洞。他設置了env vars,只是在其docker run

你這樣做:

搬運工運行--name 46485594ffc4 accountId.dkr.ecr.us-east-1.amazonaws.com/cf/rails:latest ENV

在那裏,你對您配置的任務沒有任何關係。你只有你推送的圖像。

所以,從停止容器檢查環境變量,你應該先找到它:

docker ps -a 
與容器ID

然後執行:

docker inspect ID 

有你應該看到env vars。

PS:如果你想看到與容器發生什麼,檢查其日誌:docker logs ID

+0

謝謝@羅伯特。不,我需要弄清楚爲什麼當docker檢查清楚地顯示它們已設置時,我的應用程序沒有收到環境變量。 – aeldaly