2017-12-30 46 views
0

このチュートリアルhttps://semaphoreci.com/community/tutorials/dockerizing-a-python-django-web-applicationを使用して、docker-machineを使ってDjangoアプリケーションをVirtualBoxにドッキングしています。私のブラウザに行くまで、すべてが素晴らしく行きました。私のアプリケーションは、MySQLに問題があると言っています。Dockangized DjangoがMySQLに接続できません

私が作成したのと同じ開発用VirtualBoxにイメージを作成した後に、私が従ったmysql https://github.com/mysql/mysql-dockerのインスタンスをドッキングするためのこのドキュメントが見つかりました。私はもともとなっていたエラーが

私のDjangoのデータベースは、私はその後、127.0.0.1にホストを変更しても、3306としてポートを指定しようと、私がいた新しいエラーを得た。この

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'db_name', 
     'USER': 'root', 
     'HOST': 'localhost', 
     'PORT': '' 
    } 
} 

のように見えました

(2003, "Can't connect to MySQL server on '127.0.0.1' (111)") 

私もMySQLのワークベンチに行き、127.0.0.1:3306であることを私のローカルインスタンスの接続を変更し、それが持っています助けられなかった。私が実行している

のコマンドがある

eval "$(docker-image env development)" --->おそらくこれらの事を行います。その後

  export DOCKER_TLS_VERIFY="1" 
     export DOCKER_HOST="tcp://123.456.78.910:1112" 
     export DOCKER_CERT_PATH="/Users/me/.docker/machine/machines/development" 
     export DOCKER_MACHINE_NAME="development" 

を、今、私は私のVirtualBoxにいることを、私が実行します。

docker run -it -p 8000:8000 <docker image name> --->ローカルマシンのポート8000​​をポート8000​​に転送する

docker run -it -p 3306:3306 mysql/mysql-sever --->転送先ポート33036からローカルマシンのポート3306へ

答えて

2

127.0.0.1またはlocalhostに接続しようとしていますが、これはdjangoコンテナの観点から見るとmysqlコンテナではなく、自分自身を参照するという問題です。

一般的に、コンテナが通信するには、コンテナを共通のドッカーネットワークで共有することが最適な「ドッカー方法」です。

docker network create mynet 
docker run -it --network mynet -p 8000:8000 <docker image name> 
docker run -it --network mynet -p 3306:3306 --name mysql mysql/mysql-sever 

これでアプリケーションコンテナはポートとしてホスト名と3306としてmysqlを使用してMySQLに接続できます。

+0

私の理解では、Dockerは実行中のコンテナをデフォルトの「ブリッジ」ネットワークに自動的にリンクします。実際、両方のコンテナが動作している状態で、「Docker inspect network bridge」を実行すると、両方のコンテナがそれぞれの個々のIPアドレスでブリッジネットワーク上で実行されているように見えます...カスタムネットワークを作成して、再度成功することはありません。 – Naji

+0

はいのコンテナはデフォルトでデフォルトブリッジネットワークに接続されています。ただし、DNS名ではなくIPだけを使用して通信することができます。 'Dockerはデフォルトのブリッジネットワークでの自動サービス検出をサポートしていません。https://docs.docker.com/engine/userguide/networking/#the-default-bridge-network – yamenk

+0

あなたは私のホストを変更する必要があると言っていますか?カスタムデータベースに接続した後にMySQLデータベースにアクセスするために、自分のデータベース設定を "mysql"に設定しますか? – Naji

関連する問題