このチュートリアル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へ
私の理解では、Dockerは実行中のコンテナをデフォルトの「ブリッジ」ネットワークに自動的にリンクします。実際、両方のコンテナが動作している状態で、「Docker inspect network bridge」を実行すると、両方のコンテナがそれぞれの個々のIPアドレスでブリッジネットワーク上で実行されているように見えます...カスタムネットワークを作成して、再度成功することはありません。 – Naji
はいのコンテナはデフォルトでデフォルトブリッジネットワークに接続されています。ただし、DNS名ではなくIPだけを使用して通信することができます。 'Dockerはデフォルトのブリッジネットワークでの自動サービス検出をサポートしていません。https://docs.docker.com/engine/userguide/networking/#the-default-bridge-network – yamenk
あなたは私のホストを変更する必要があると言っていますか?カスタムデータベースに接続した後にMySQLデータベースにアクセスするために、自分のデータベース設定を "mysql"に設定しますか? – Naji