Docker-composeで2つのdockerコンテナーを作成します。 MacではDockerを使用しますが、boot2dockerは使用しません。
version: '2'
services:
drupal-web:
image: drupal:latest
ports:
- "8080:80"
depends_on:
- mysql-server
links:
- mysql-server:mysql
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
すべて正常に動作します。 Drupalをインストールしました。
問題は、SequelProを自分のDBに接続したいのですが、mysqlコンテナに接続できません。私はドッカー初心者です。
DBポートをホストに公開するのを忘れたため、単に追加します
mysql-server:
image: mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
次に、次を使用してSequel Proのデータベースに接続します。
user: root
password: root
Host: localhost
port: 3306
ホストでローカルmysqlデータベースが既に実行されている場合は、ポートを変更します
ports:
- "4306:3306"
そして、4306
の代わりにポート3306
に接続します。 Drupalコンテナから、まだ3306
を使用することに注意してください。
ホストポート4306(またはその他の使用可能なポート)をdocker mysql 3306にマッピングします。
mysql-server:
image: mysql
environment:
MYSQL_DATABASE: drupal
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
ports:
- "4306:3306"
127.0.0.1:4306でdocker mysqlに接続できるはずです
mysql -u drupal -h 127.0.0.1 -P 4306 -p
私の場合、mysql:8に問題があり、任意の5に変更しても問題ありません
次のようになります。
version: '2'
services:
mysql-server:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
drupal-web:
image: drupal:latest
ports:
- "8080:80"
depends_on:
- mysql-server
links:
- mysql-server:mysql-server
environment:
MYSQL_DATABASE: drupal
MYSQL_USER: drupal
MYSQL_PASSWORD: drupal
(グローバルレベルの作業で環境変数を定義するかどうかはわかりません。おそらく、知っている人が私の答えをここで修正して簡素化できるかもしれません)
ご覧のとおり、mysql-serverとdrupal-webの2つのサービスがあります。 Drupal-webはデータベースサービスをリンクします。両方のサービスには、独自の環境変数があります。