サーチ…


備考

デフォルトでは、あなたのアプリに単一のネットワークを設定します。サービスの各コンテナは、デフォルトのネットワークに参加し、そのネットワーク上の他のコンテナによって到達可能であり、コンテナ名と同一のホスト名でそのコンテナによって検出可能です。

リンクを使用すると、別のサービスから到達可能な別のエイリアスを定義できます。サービスの通信を可能にする必要はありません。デフォルトでは、どのサービスもそのサービスの名前で他のサービスに到達することができます。

https://docs.docker.com/compose/networking/

デフォルトのネットワークで基本的なLAMP環境を作成する方法

docker-compose.yml

version: '2'
services:
  php:
     image: phpmyadmin/phpmyadmin
     links:
       - mysql:db
     depends_on:
       - mysql

  mysql:
    image: k0st/alpine-mariadb
    volumes:
      - ./data/mysql:/var/lib/mysql
    environment:
      - MYSQL_DATABASE=mydb
      - MYSQL_USER=myuser
      - MYSQL_PASSWORD=mypass 

  nginx:
    image: nginx:stable-alpine
    ports:
      - "81:80"
    volumes:
      - ./nginx/log:/var/log/nginx
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
    depends_on:
      - php

nginx / nginx.conf

worker_processes  1;
events {
  worker_connections  1024;
}
http {
  sendfile  off;
  server {
    listen 80;
 
    location / {
      proxy_pass  http://php;
      proxy_set_header Host $host;
      proxy_redirect     off;
    }
  }
}

nginxの設定は単純化されていますが、上記のテストはうまくいくはずです。基本的にはPHPアプリケーションのプロキシです。ホスト上の競合を回避するためにポート81にマッピングし、必要に応じて調整します。

リンクに関しては、 docker-compose exec mysql ping -c2 nginxを実行てmysqlコンテナから nginxコンテナにdocker-compose exec mysql ping -c2 nginx 、これらのコンテナ間にリンクが指定されていなくても成功します。 Docker Composeはデフォルトネットワークのリンクを維持します。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow