2017-01-31 8 views
1

hereからのドッカーWebアプリケーションのセットアップチュートリアルに従っています。 docker-compose.ymlファイルに記載されているように、MySQLコンテナはアプリにリンクされており、index.phpphpMyAdminの両方でアクセスできます。これまでのところ問題ありません。あるコンテナから別のコンテナへのサービスへのアクセス

docker exec -it container-id bashを使用してアプリケーションの対話型シェルを開き、MySQLサービスにアクセスしようとしましたが、できませんでした。私はここで何が欠けているのですか?

Edit1:MySQLと入力すると、bash: mysql: command not foundと表示されます。

EDIT2:docker ps

CONTAINER ID  IMAGE     COMMAND     CREATED    STATUS    PORTS     NAMES 
1643f0ba5637  dockertutorial_php  "docker-php-entryp..." 9 seconds ago  Up 6 seconds  9000/tcp    dockertutorial_php_1 
610f2c8bf4c4  phpmyadmin/phpmyadmin "/run.sh phpmyadmin"  9 seconds ago  Up 6 seconds  0.0.0.0:8080->80/tcp dockertutorial_phpmyadmin_1 
29c552da473b  mysql:latest   "docker-entrypoint..." 10 seconds ago  Up 8 seconds  3306/tcp    dockertutorial_mysql_1 

出力EDIT3:はおそらく、私はこれで開始している必要があります。私は、(特にジェイ・ブランチャード& @mkasbergに)引き起こされた/引き起こされる全ての混乱についてお詫び申し上げます。私はMySQLデータベースを作成するnginxのコンテナの中でbashスクリプトを実行したい。 nginxのコンテナにMySQLをインストールしても、それが別のコンテナである場合は動作しません。現在のアプローチで達成することは可能ですか?どうすればそれを訂正すればい​​いですか?

+1

エラーが発生しますか?コンテナには、ホストファイルにエントリとしてmysqlサーバがありますか?リンクされたコンテナからmysqlコンテナをpingすることはできますか? mysqlサーバは他のマシンからのアクセスを許可するように設定されていますか? – JimL

+1

'mysql -u * name * -p'? –

+1

どのようにアクセスしようとしましたか、どのような問題がありましたか? –

答えて

1

mysql: command not foundは、ログインしているいずれのコンテナでもmysqlクライアントバイナリが利用できないことを意味します。あなたはdocker execをMySQL以外のコンテナで実行していると思います。バイナリは、MySQLコンテナにあります。これらの他のコンテナはです。はMySQLを接続しますが、にはMySQLコマンドラインアプリケーションがありません(イメージサイズを小さくする)。

docker execコマンドでMySQLコンテナに接続していることを確認してください。動作するはずです。実際、ドッカーの作成は、これを行う方法を提供します。 mysqlコンテナ内のbashプロンプトにあなたを取得する必要

$ docker-compose exec mysql /bin/bash 

:あなたのサービスは(docker-compose upを行った後に)実行すると、これを試してみてください。以前は、nginxコンテナのbashプロンプトになっていました。コマンドラインでmysqlを実行することはできません。

+0

'docker-compose.yml'は、リンクを 'MySQL'コンテナに回します。また、私は 'index.php'を介してMySQLにアクセスすることができます。私のために明確にしてください。 – DhiwaTdG

+1

あなたが必要とするdocker-composeコマンドを表示するために私の答えを編集しました。 'mysql -u root -p -h localhost'のようにmysqlに接続したい場合は、mysqlコンテナでbashを実行する必要があります。 – mkasberg

+0

'nginx'コンテナからindex.php経由でMySQLにアクセスできますが、これは' nginx'コンテナ内でmysqlクライアントを実行することとは異なります。 'nginx'コンテナは、PHP(または別のインストールされたアプリケーション)を介して_only_ MySQLに接続できます。 'mysql'コマンドラインアプリケーションがインストールされていません。 – mkasberg

関連する問題