2017-06-11 18 views
0

mysqlコンテナのipを指し示すのではなく、mysqlコンテナを指すのではなく、mysqlコンテナをデータとして使用できるようにするにはlocalhostを使用します。dockerのmysqlホスト名にdbの代わりにlocalhostを使用

$mysqli = new mysqli("localhost", "root", "examplepass", "set", 3306); 

私はホスト名としてデシベルを使用しない限り、上記のコードは動作しませんMySQLへの私のPHPの呼び出しでlocalhostを使用するにはどうすればよい

db: 
    image: mariadb 
    container_name: mariadb 
    environment: 
    MYSQL_ROOT_PASSWORD: examplepass 

www: 
    build: ./images/www 
    links: 
    - db:mysql 
    ports: 
    - 8080:80 

は私がDockerfileを通じてホストがコンテナに何らかの形でファイルを変更したり、YAMLを構成する必要がありますか?

+0

[2つのコンテナが互いにリンクされるようにする](https://stackoverflow.com/questions/27563460/let-two-containers-getting-linked-to-eachother) – rickdenhaan

+0

@rickdenhaanコンテナ名ではなくlocalhostを使って別のコンテナを参照したいので、他のコンテナのmysqlにアクセスする必要があるPHPスクリプトでlocalhostを使用することができます。 – isethi

+0

はい、その質問に対する承認された回答に示唆されているように、両方のコンテナをリンクする代わりに別々に起動する必要があります。 – rickdenhaan

答えて

0

あなたが期待するように、これは動作しますが、それは(ない8080、80)リッスンどこwwwは次のようになります。

version: "2" 

services: 
    db: 
    image: mariadb 
    container_name: mariadb 
    environment: 
     MYSQL_ROOT_PASSWORD: examplepass 
    network_mode: "host" 

    www: 
    build: ./images/www 
    links: 
     - db 
    network_mode: "host" 

network_mode: "host"を使用して、コンテナがホストと同じローカルホストを取得し、のは言わせて。

mysqlをホスト外に公開しないように、mysql bind-addresslocalhostを設定してください。

+0

私はあなたのようにdbの代わりにlocalhostとしてmysqlを指したいと思います。また、mysqlをインターネットに公開することも望まない。それは、PHP(www)コンテナを介してのみアクセス可能である必要があります。 – isethi

+0

私は自分の答えを編集しました。 – Robert

+0

それで、localhostをmysqlコンテナのIPに向けるようにhostsファイルを変更する方法はありませんか? @Robert – isethi

関連する問題