2015-07-01 21 views
7

Obecnie przy użyciu Elastic Beanstalk do uruchamiania kontenerów Docker, muszę przekazać ważne informacje jako zmienne środowiskowe do moich kontenerów.Przekazywanie zmiennych środowiskowych do kontenerów Docker

Mój obecny Dockerrun.aws.json wygląda następująco:

{ 
    "AWSEBDockerrunVersion": "1", 
    "Image": { 
     "Name": "b2boost/rabbitelasticdockstash", 
     "Update": "true" 
    }, 
    "Ports": [ 
     { 
      "ContainerPort": "80" 
     } 
    ], 
    "environment": [ 
     { 
      "name": "RABBITMQ_HOST", 
      "value": "RABBITMQ_HOST" 
     }, 
     { 
      "name": "RABBITMQ_PASSWORD", 
      "value": "RABBITMQ_PASSWORD" 
     }, 
     { 
      "name": "RABBITMQ_USER", 
      "value": "RABBITMQ_USER" 
     }, 
     { 
      "name": "RABBITMQ_VHOST", 
      "value": "RABBITMQ_VHOST" 
     }, 
     { 
      "name": "ELASTICSEARCH_HOST", 
      "value": "ELASTICSEARCH_HOST" 
     }, 
     { 
      "name": "ELASTICSEARCH_PASSWORD", 
      "value": "ELASTICSEARCH_PASSWORD" 
     }, 
     { 
      "name": "ELASTICSEARCH_PORT", 
      "value": "ELASTICSEARCH_PORT" 
     }, 
     { 
      "name": "ELASTICSEARCH_PROTOCOL", 
      "value": "ELASTICSEARCH_PROTOCOL" 
     }, 
     { 
      "name": "ELASTICSEARCH_USER", 
      "value": "ELASTICSEARCH_USER" 
     } 
    ], 
    "Volumes": [ 
    ], 
    "Logging": "/var/log/eb-activity.log" 
} 

ta nie działa jednak. Kiedy SSHing do mojego instancji beanstalk następnie uzyskiwanie zawartości zmiennych środowiskowych, widzę, że nie były one zainicjowany:

[[email protected] ~]$ sudo docker exec goofy_curie env 

PATH=/opt/logstash/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:bin 
HOSTNAME=HOSTNAME 
LANG=C.UTF-8 
JAVA_VERSION=7u79 
JAVA_DEBIAN_VERSION=7u79-2.5.5-1~deb8u1 
LOGSTASH_MAJOR=1.5 
LOGSTASH_VERSION=1:1.5.1-1 
HOME=/root 

Jak ustawić zmienne środowiskowe w moich pojemników? Dockerrun.aws.json nie działa dla mnie.

+1

Czy spróbować tej opcji: http://stackoverflow.com/questions/28298101/elastic-beanstalk-environment-variables -do-dockera-hosta? –

+1

Jeśli nie chcesz przechowywać informacji na temat VCS, możesz skorzystać z konsoli internetowej. Działa dobrze w moich dokowanych środowiskach. http://stackoverflow.com/a/17878600/1102395 – Samar

Odpowiedz

9

Pole "środowisko" nie jest dozwolone w Dockerrun.aws.json dla pojedynczych kontenerów.

Można jednak określić zmienne środowiskowe w pliku .config z następującą procedurą (patrz na documentation aby uzyskać więcej informacji):

  1. utworzyć folder .ebextensions
  2. Utwórz plik .config w folder
  3. Napełnić plik konfiguracyjny:
 
option_settings: 
    - option_name: RABBITMQ_HOST 
    value: RABBITMQ_HOST 
    - option_name: RABBITMQ_PASSWORD 
    value: RABBITMQ_PASSWORD 
    - option_name: RABBITMQ_USER 
    value: RABBITMQ_USER 
    - option_name: RABBITMQ_VHOST 
    value: RABBITMQ_VHOST 
    - option_name: ELASTICSEARCH_HOST 
    value: ELASTICSEARCH_HOST 
    - option_name: ELASTICSEARCH_PASSWORD 
    value: ELASTICSEARCH_PASSWORD 
    - option_name: ELASTICSEARCH_PORT 
    value: ELASTICSEARCH_PORT 
    - option_name: ELASTICSEARCH_PROTOCOL 
    value: ELASTICSEARCH_PROTOCOL 
    - option_name: ELASTICSEARCH_USER 
    value: ELASTICSEARCH_USER 
  1. ZIP .ebextensions złożyć wraz z Dockerrun.aws.json i przesłać go do beanstalk
+0

co, jeśli nie łączymy się, a zamiast tego podajemy obraz w hubie docker? Gdzie pójdą ".ebextensions"? – Luke

+0

@Luke Nadal musisz określić obraz Docker Hub w pliku Dockerrun.aws.json w prawo? Stwórz więc repozytorium git z Dockerrun.aws.json i .ebextensions, a następnie użyj interfejsu EB CLI, aby łatwo wdrożyć konfigurację. –

Powiązane problemy