2016-08-19 10 views
0

私はDjangoの入ったDockerコンテナを実行しています。そして、私は私のコンテナを起動Docker環境変数とDjangoデータベースの設定

version: '2' 

volumes: 
    postgres_data_dev: {} 
    postgres_backup_dev: {} 

services: 
    postgres: 
    build: ./compose/postgres 
    volumes: 
     - postgres_data_dev:/var/lib/postgresql/data 
     - postgres_backup_dev:/backups 
    environment: 
     - POSTGRES_USER=sorbetcitron 

    django: 
    build: 
     context: . 
     dockerfile: ./compose/django/Dockerfile-dev 
    command: python ./manage.py runserver_plus 0.0.0.0:8000 
    depends_on: 
     - postgres 
    environment: 
     - POSTGRES_USER=sorbetcitron 
     - USE_DOCKER=yes 
     - DJANGO_DEBUG=True 
     - DATABASE_URL=postgres://django:[email protected]:5432/sorbetcitron 
    volumes: 
     - .:/app 
    ports: 
     - "8000:8000" 
    links: 
     - postgres 



    pycharm: 
    build: 
     context: . 
     dockerfile: ./compose/django/Dockerfile-dev 
    depends_on: 
     - postgres 
    environment: 
     - POSTGRES_USER=sorbetcitron 
    volumes: 
     - .:/app 
    links: 
     - postgres 

:ここ

は私のdev.ymlファイルです

docker-compose -f dev.yml up 

しかし、私はときに私の環境変数が設定されていません得た:

docker-compose -f dev.yml run django echo $DATABASE_URL 

私は、コンテナ内のデータベースとローカルマシンの別のデータベースとの簡単な切り替えをテストしたいだけです。

編集#1 私の変数が効果的にドッキングウィンドウ・コンコンフィグリターンとして、設定されている:

services: 
    django: 
    build: 
     context: /Users/vincentle/dev/sorbetcitron 
     dockerfile: ./compose/django/Dockerfile 
    command: /gunicorn.sh 
    depends_on: 
    - postgres 
    - redis 
    environment: 
     DATABASE_URL: postgres://django:[email protected]:5432/sorbetcitron 
     DJANGO_ACCOUNT_ALLOW_REGISTRATION: 'True' 
     DJANGO_ADMIN_URL: '' 
     DJANGO_ALLOWED_HOSTS: .sorbetcitron.com 
     DJANGO_AWS_ACCESS_KEY_ID: '' 
     DJANGO_AWS_SECRET_ACCESS_KEY: '' 
     DJANGO_AWS_STORAGE_BUCKET_NAME: '' 
     DJANGO_MAILGUN_API_KEY: '' 
     DJANGO_SECRET_KEY: s+s6-^@s&[email protected]!qsprhd5-1-0*wuh*0tjm_5)%uq(5q(nc4c 
     DJANGO_SECURE_SSL_REDIRECT: 'False' 
     DJANGO_SENTRY_DSN: '' 
     DJANGO_SERVER_EMAIL: '' 
     DJANGO_SETTINGS_MODULE: config.settings.production 
     POSTGRES_PASSWORD: mysecretpass 
     POSTGRES_USER: postgresuser 
    user: django 

しかし、私は私のDjangoはアカウントにこの変数を取っていない理由(私は再生することができます理解していませんドッキングウィンドウのPostgresのDBに格納されたデータ)

私のconfig.pyファイルで:

DATABASES = { 
    # Raises ImproperlyConfigured exception if DATABASE_URL not in os.environ 
    'default': env.db('DATABASE_URL', default='postgres:///sorbetcitron'), 
} 

答えて

1

私は、Pythonではありませんよエキスパートですが、環境変数を読み取るコードが間違っています。

てみてください:

import os 
DB_URL = os.getenv('DATABASE_URL') 
関連する問題