2017-06-23 13 views
1

私はドッカーに私のプロジェクトを設定しました。私はノンドック時代に使用されていたデータベースを持っていますが、今は私のドッカー作成データベースサービスに接続したいのです。しかし、私がdocker-compose upと書いたとき - 既存のデータベースは使用されていません - 新しいものが代わりに作成されました(私は疑いがあります、ドッカーのコンテナは単にデータベースを見ません)。ナンセンスなら私に知らせてください。たぶん私はサーバdbをコンテナに移行してみることにします。ここで dockerコンテナからlocalhost postgresデータベースに接続するには?

は私のドッキングウィンドウ-compose.ymlです:私は思う

services: 
    db: 
    restart: always 
    image: postgres:latest 
    environment: 
     - POSTGRES_DB=mydb 
     - [email protected] 
     - POSTGRES_USER=root 
    ports: 
     - "5432:5432" 
    volumes: 
     # We'll mount the 'postgres-data' volume into the location Postgres stores it's data: 
     - postgres-data:/var/lib/postgresql/data 
    web: 
    build: . 
    command: bash -c "python manage.py collectstatic --noinput && ./manage.py migrate && ./run_gunicorn.sh" 
    volumes: 
     - .:/code 
     - /static:/static 
    ports: 
     - 443:443 
    depends_on: 
     - db 
    nginx: 
    restart: always 
    image: nginx:latest 
    ports: 
     - 80:80 
    volumes: 
     - ./misc/nginx.conf:/etc/nginx/conf.d/default.conf 
     - /static:/static 
    depends_on: 
    - web 

答えて

0

、キャノニックアプローチは、ハードにボリュームをマップ(永続ストレージにデータを格納しながら、あなたのDBエンジンは、コンテナ内で実行することですディスク)。 だから私はあなたが示唆したように、ServerDBとしてdockerでPostgresを使用します。

+0

です。そして私はどこが間違っているの?なぜ私のdbエンジンは、永続的なストレージに格納されているdbを表示しません。ドッカーがconfigを作成する様子を見ていただけますか? –

+0

docker-compose.ymlにホストからのフォルダではなく、名前付きデータボリュームをマウントしています:https://docs.docker.com/engine/tutorials/dockervolumes/#data-volumes 代わりに './postgres-data:/ var/lib/postgresql/data'というデータを持つホストフォルダ –

0

あなただけのアプリケーションが外部のホストとして、それを宣言し、外部データベースに接続する場合:

version: '2' 
services: 

    web: 
    build: . 
    command: bash -c "python manage.py collectstatic --noinput && ./manage.py migrate && ./run_gunicorn.sh" 
    volumes: 
     - .:/code 
     - /static:/static 
    ports: 
     - 443:443 
    extra_hosts: 
     - "db:192.168.1.2" 

    nginx: 
    restart: always 
    image: nginx:latest 
    ports: 
     - 80:80 
    volumes: 
     - ./misc/nginx.conf:/etc/nginx/conf.d/default.conf 
     - /static:/static 
    depends_on: 
     - web 

ちょうどあなたのアプリケーションは、DBとしてデータベースを参照してください、私はあなたのホストとそこに置かIPを置き換えますip。

よろしくお願いいたします。

関連する問題