2017-05-23 21 views
1

MySQLのコンテナに問題があり、コンテナに接続できません。MySQLドッカーのコンテナに接続できません

これは私がdocker-compose up -d --buildで実行私のdocker-compose.yml

apache: 
build: ./ 
ports: 
    - 1814:80 
volumes: 
    - ./code:/app 
links: 
    - db 
environment: 
    - APACHE_SERVER_NAME=local.dev 
    - PHP_SHORT_OPEN_TAG=On 
    - PHP_ERROR_REPORTING=E_ALL 
    - PHP_DISPLAY_ERRORS=On 
    - PHP_HTML_ERRORS=On 

db: 
image: mysql:5.6 
ports: 
    - "3333:3306" 
volumes: 
    - /var/lib/mysql 
environment: 
    MYSQL_ROOT_PASSWORD: admin 
    MYSQL_DATABASE: app 

です。その後

、私は、私はmddev_apache_1容器にインタラクティブシェルを実行するdocker exec -it mddev_apache_1 /bin/bashを使用容器

https://i.imgsafe.org/3caf28c5f0.png

を実行して表示することdocker psを使用します。私は、MySQLに接続しようとすると、

しかし、その拒否しました。

https://i.imgsafe.org/3ccfde1f73.png

私はMySQLのコンテナに接続できない理由を任意のアイデア?

ありがとうございました。

============================================== ====

UPDATE

私は私にdocker-compose.ymlを変更:

version: '2' 

services: 
apache: 
    build: ./ 
    container_name: web-server 
    ports: 
     - 1814:80 
    volumes: 
     - ./code:/app 
    links: 
     - db 
    environment: 
     - APACHE_SERVER_NAME=local.dev 
     - PHP_SHORT_OPEN_TAG=On 
     - PHP_ERROR_REPORTING=E_ALL 
     - PHP_DISPLAY_ERRORS=On 
     - PHP_HTML_ERRORS=On 
    networks: 
     report: 
      aliases: 
       - web-server 
db: 
    image: mysql:5.6 
    container_name: database 
    ports: 
     - "3333:3306" 
    volumes: 
     - /var/lib/mysql 
    environment: 
     MYSQL_ROOT_PASSWORD: admin 
     MYSQL_DATABASE: app 
    networks: 
     report: 
      aliases: 
       - database 

networks: 
report: 
    driver: bridge 

しかし、私はまだ私のMySQLのコンテナに接続することはできません。

http://i.imgsafe.org/4eb89f3857.png

私は私のネットワークと私のコンテナを検査してみてください。

mddev_reportネットワークが検査:http://i.imgsafe.org/4eae17a27f.png

web-serverコンテナが検査:http://i.imgsafe.org/4ec74e5d52.png

databaseコンテナが検査:http://i.imgsafe.org/4ecb129d2d.png

+0

どのバージョンを使用していますか?'default'以外のネットワークを使用していますか? – Jite

+0

'ドッカーの作成バージョン1.8.0、ビルドf3628c7'。いいえ、私はどんなネットワークも使いません。 – Friandy

+0

申し訳ありませんが、compose.ymlファイルで、( 'version: 'x'')heheです。 – Jite

答えて

1

あなたのmysqlコンテナは、ポート3306をホスト3333ポートにマッピングしながら、ポートをネットワークに公開します。
portsプロパティを使用すると、ネットワーク上の他のコンテナではなく、ポートをローカルホストにマッピングします。

web-serverコンテナの中からmysql -uroot -padmin -h database -P 3306経由でmysqlサーバに接続できる必要がありますが、ホストからはmysql -uroot -padmin -h localhost -P 3306を使用できるはずです。

+0

ああありがとう!最後に私はmysqlコンテナに接続することができます。どうもありがとう ! – Friandy

0

あなたがDBへのあなたのドッキングウィンドウをリンクしている...私はデシベルが有効でない場合、または変更されていると思いますそのIP ...あなたはあなたのmysqlのドッカーを停止し、それをコミットしてから新しいイメージを再度実行しようとする必要があります。

それが切り離さモード(-d)でそれを実行しているのではなく、失敗した場合はどうかを確認するために、対話型モード(-it)でそれを実行することができますし、それを実行しているときに例外が発生します。

+0

私は上記の私の質問で私の 'docker-compose.yml'でいくつかの更新をしています。それを確認できますか? – Friandy

関連する問題