2017-06-01 11 views
1

私はdocker-swarmを介して作成された2つのドッカーサービスを持っています。ドッカーコンテナーのtomcatとmysqlの接続中に問題が発生しましたか?

1つはTomcatで、もう1つはmysqlです。私はtomcatからmysqlに接続しようとしていますが、どちらも別のコンテナにあります。

ここはtomcat containerのhibernate.cfg.xmlです。

<property name="connection.url"> 
      jdbc:mysql://localhost:3306/travelbiz 
     </property> 
     <property name="connection.username">trvlbz_admin</property> 
     <property name="connection.password">admin123</property> 

、ここ

[email protected]:/home/smadmin# docker ps 
CONTAINER ID  IMAGE                         COMMAND     CREATED    STATUS    PORTS    NAMES 
2ecb386d9bbc  cloudesire/[email protected]:19e24a2290e4c3253a44d65243a54c520e9f8e0fe0edf3a5221ccc67cf9da0f8    "/run.sh"    7 hours ago   Up 7 hours   8080/tcp   apache.2.1ftla1ohbnjgax7ibk8fbh5hz 
4e940f3be18d  vishnuranganathan/[email protected]:4460004d01c9a23d4c80ea2a9d7a69fc1495cbe01b48555cf28bd73a535176d1 "/usr/bin/mysqld_safe" 7 hours ago   Up 7 hours   3306/tcp   mysql.1.hjoba4bsrl8lujfumc6qru3uq 

を実行しているサービスである私は、mysqlの接続を取得しています誰かがこの上で私を助けるtomcat.canを経由してアクセスしようとすると、例外を拒否しましたか?

+0

コンテナ内のmysql設定が外部接続を許可しているかどうか確認しましたか?これはmy.cnfファイルにあり、設定は 'bind_address 0.0.0.0'です。それを削除するだけです。 –

+0

@JorgeCamposええ、私はまだ0.0.0.0に同じ問題、Tomcatのコンテナ内のhibernate.cfg.xmlの中 変更: <プロパティ名= "connection.urlを"> JDBCます。mysql:// localhostを:3306/travelbiz localhost(または)host-ip(または)mysql-container-id ?? –

+1

'localhost'それはあなたの問題です。これは、localhostではなく、mysqlコンテナのIPアドレスでなければなりません。 –

答えて

1

mysqlコンテナのIPアドレスは、新しいmysqlコンテナが次回起動されたときに変更するようにバインドされているので、使用したくない場合や、規模を拡大した場合(mysqlでは簡単ではないかもしれません)。理想的には、コンテナの名前を使用する必要があります。 docker runを使用したコンテナを持ち上げたら、--name mysqlを追加してから、ipアドレスの代わりにmysqlを使用してください。

+0

私はあなたがポイントAnoopに同意します。私はコンテナを持ち上げるためにスウォームを使用しています。 Docker-swarmを使用すると、コンテナ名の代わりにサービス名を使用できますか? –

+1

はい、絶対に。サービス名を使用すると、複数のレプリカを持つようにサービスを拡張する場合があるため、非常に便利です。 1つのサービス名が、あなたが持っている可能性がある多くのレプリカに届くことを望みます。 – Anoop

関連する問題