ECS:在任务中设置但在容器中不存在的环境variables

我有一个任务定义如下所示:

> 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 } } 

当容器启动时,环境variables不会被设置。 我从ecs容器机器中运行了下面的命令,从一个启动失败的容器中运行

 [root@ip-ip 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 

任何想法为什么variables没有被设置?

提前致谢。

docker run自己docker run一个映像时,你会错过AWS为运行一个容器所做的事情。 他只是在docker run设置环境variables。

你做:

docker运行 – 名称46485594ffc4 accountId.dkr.ecr.us-east-1.amazonaws.com/cf/rails:latest env

在那里,你没有任何关于你configuration的任务。 你只有你推的图片。

所以,要检查一个停止的容器的环境variables,你应该先find它:

 docker ps -a 

然后用容器ID做:

 docker inspect ID 

在那里你应该看到环境variables。

PS:如果你想看看这个容器发生了什么,请检查它的日志: docker logs ID