2017-11-14 1 views
0

ネットワーク上の他のデバイスからの接続を許可するようにDockerを設定しようとしています。現在Dockerにアクセスするには、私のコンピュータのlocalhostにアクセスしてください。コンピュータのローカルIP(192.168.0.140)を使用して接続しようとしています。ファイルを表示できますが、データベースには接続できません。IP(ローカルホストのみ)を使用してDockerデータベースにアクセスできない

これは私の設定に問題があると思われますが、問題を解決するためにDockerについて十分な知識がありません。

version: '2' 

services: 
    webserver: 
    build: ./docker/webserver 
    image: localdev 
    ports: 
     - '80:80' 
     - '443:443' 
    volumes: 
     - ./www:/var/www/html 
    links: 
     - db 

    db: 
    image: mysql:5.6 
    ports: 
     - 3306 
    volumes: 
     - ./db:/var/lib/mysql 
    environment: 
     - MYSQL_ROOT_PASSWORD=secret 

    phpmyadmin: 
    image: phpmyadmin/phpmyadmin:latest 
    links: 
     - db 
    environment: 
     PMA_HOST: db 
     PMA_PORT: 3306 
     MYSQL_USER: root 
     MYSQL_ROOT_PASSWORD: secret 
    ports: 
     - '8080:80' 

ご協力いただければ幸いです。

答えて

0

たぶん、あなたは次のように試してみてください:あなたは、コンテナとホスト間のポートをマッピングしているので、あなたが他のコンテナに接続することができます

version: '2' 

services: 
    webserver: 
    build: ./docker/webserver 
    image: localdev 
    ports: 
     - '0.0.0.0:80:80' # Map container port 80 on your "public" ip on port 80, it will be available on the network 
     - '0.0.0.0:443:443' # Same for port 443 
    volumes: 
     - ./www:/var/www/html 
    links: 
     - db 

    db: 
    image: mysql:5.6 
    # ports: 
    # - 3306 # You don't need to map port 3306 because mysql already expose this port for others containers, unless you wan't to access to your mysql directly 
    volumes: 
     - ./db:/var/lib/mysql 
    environment: 
     - MYSQL_ROOT_PASSWORD=secret 

    phpmyadmin: 
    image: phpmyadmin/phpmyadmin:latest 
    #links: 
    # - db # Not necessary, with docker-compose v2 every containers are in the same network and see each other 
    environment: 
     PMA_HOST: db 
     PMA_PORT: 3306 
     MYSQL_USER: root 
     MYSQL_ROOT_PASS 
     WORD: secret 
    ports: 
     - 'localhost:8080:80' # to keep your phpmyadmin only available from localhost. 
+0

ない一部があるとして、これがdownvotedれた理由を確認してください上のデータベースに接続することができるようになります有効なポイント。しかし、私は設定を変更しても、IP上のデータベースにアクセスすることはできません - 'localhost'だけで、何かがまだ正しく設定されていないことを示唆しています... – Chrish

1

理由があります。これは、ホスト上のランダムなポートを選択します

ports: 
    - 3306 

:あなたは短いポートの構文を使用しているデータベースの場合 。長い形式の構文を使用し、データベースに接続できるようにするには:その場合は

ports: 
    - '3306:3306' 

を、あなたはlocalhost:3306

+0

私はこれを修正するかもしれないが、差。私はまだ内部IPからポートにアクセスできません。私は 'http://192.168.0.104:8080 /'からphpMyAdminにアクセスすることができ、ファイルにアクセスすることができますが、 'localhost'から見えない限りCMSはデータベースに接続しません。 – Chrish

関連する問題