2015-07-01 22 views
7

Attualmente utilizzando Elean Beanstalk per eseguire i contenitori Docker, ho bisogno di passare informazioni importanti come variabili di ambiente ai miei contenitori.Passare le variabili di ambiente ai contenitori Docker

Il mio attuale Dockerrun.aws.json assomiglia a questo:

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

Questo non funziona comunque. Quando a collegarsi con SSH al mio esempio beanstalk quindi ottenere il contenuto delle variabili di ambiente, posso vedere che essi non sono stati inizializzati:

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

Come si possono impostare le variabili di ambiente nei miei contenitori? Il Dockerrun.aws.json non sembra funzionare per me.

+1

Hai provato questa opzione: http://stackoverflow.com/questions/28298101/elastic-beanstalk-environment-variables -per-docker-host? –

+1

Se non si desidera conservare le informazioni su VCS, è possibile utilizzare la console Web. Funziona bene per i miei ambienti dockerizzati. http://stackoverflow.com/a/17878600/1102395 – Samar

risposta

9

Il campo "ambiente" non è consentito nel Dockerrun.aws.json per i singoli contenitori.

È possibile tuttavia specificare le variabili di ambiente in un file con estensione config con la seguente procedura (guardare il documentation per maggiori informazioni):

  1. Crea una cartella .ebextensions
  2. Creare un file .config in la cartella
  3. Riempire il file di configurazione:
 
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. file ZIP i .ebextensions insieme al Dockerrun.aws.json e caricarlo beanstalk
+0

cosa succede se non si sta eseguendo il raggruppamento e invece si sta specificando un'immagine sull'hub docker? Dove andrebbero le ". Estensioni"? – Luke

+0

@Luke Devi ancora specificare l'immagine dell'Hub Docker in un file Dockerrun.aws.json giusto? Quindi creare un repository git con Dockerrun.aws.json e .ebextensions e quindi utilizzare EB CLI per distribuire facilmente la configurazione. –

Problemi correlati