laradockのworkspaceコンテナからmysqlコンテナに接続する方法

# 環境
OS：macOS Mojave 10.14.3
Docker：18.09.2
docker-compose：1.23.2
docker-machine：0.16.1
php：7.1.23
Laravel Framework：5.8.7
mysql：Ver 14.14 Distrib 5.7.25, for Linux (x86_64) using EditLine wrapper


# 前提条件
workspaceコンテナとmysqlコンテナが起動していること。
workspaceコンテナにlaravelプロジェクトを作成済みの状態とすること。

```
$ docker-compose up -d php-fpm nginx mysql
Recreating laradock_mysql_1          ... done
Starting laradock_docker-in-docker_1 ... done
Starting laradock_workspace_1        ... done
Starting laradock_php-fpm_1          ... done
Starting laradock_nginx_1            ... done
```

もしうまく起動していない場合は、以下の投稿が参考になるかもしれません。
[laradock で『laradock_mysql_1　docker-entrypoint.sh mysqld　Exit 2』となる問題を解決](https://qiita.com/dmrt/items/2965a714dd1173ca8871)


# 1.laradockの環境変数を確認する
あとでworkspaceコンテナの.envに使用する為メモします。

```:laradock/.env

### MYSQL #################################################

MYSQL_VERSION=latest
MYSQL_DATABASE=laradock
MYSQL_USER=laradock
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d
```

# 2.mysqlコンテナの環境変数を編集する
mysqlコンテナに入ります。と、その前にmysqlコンテナのＩＰアドレスを確認しましょう。

```
#プロセスを確認する
$ docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                                        NAMES
5e381fd5b741        laradock_mysql       "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:3306->3306/tcp, 33060/tcp            laradock_mysql_1
515087baabdb        laradock_nginx       "/bin/bash /opt/star…"   3 hours ago         Up 2 minutes        0.0.0.0:443->443/tcp, 0.0.0.0:8080->80/tcp   laradock_nginx_1
59498d6b6c56        laradock_php-fpm     "docker-php-entrypoi…"   3 hours ago         Up 2 minutes        9000/tcp                                     laradock_php-fpm_1
12f7136f133f        laradock_workspace   "/sbin/my_init"          3 hours ago         Up 2 minutes        0.0.0.0:2222->22/tcp                         laradock_workspace_1
36e1ff67cffc        docker:dind          "dockerd-entrypoint.…"   23 hours ago        Up 2 minutes        2375/tcp                                     laradock_docker-in-docker_1

＃確認したコンテナidでコンテナの情報を見る
$ docker inspect 5e381fd5b741
.
. 割愛
.            "Networks": {
                "laradock_backend": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "mysql",
                        "5e381fd5b741"
                    ],
                    "NetworkID": "f752f887d9bffa031bfa786927d4e2a3590f6c913c2c35d16cd2e6e424101e04",
                    "EndpointID": "568f98db3916caddb99c8d93f4ffcba10f21da28c54c0a95d1d1d20d0bf2fc5b",
                    "Gateway": "172.19.0.1",
                    "IPAddress": "172.19.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:13:00:03",
                    "DriverOpts": null

```

IPAddressをメモしてmysqlコンテナに入りましょう。

```
$ docker-compose exec mysql bash
```

まず、mysqlにテーブルができているか確認しましょう。

```
# mysql -u root -p
Enter password: #root 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.25 MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| laradock           |
| myapp              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.03 sec)
```

１の環境変数で指定したlaradockテーブルができていますね。
それではユーザーを追加しましょう。

```
#1で確認したユーザー名と上記で確認したＩＰアドレスを指定しましょう。
mysql> create user 'laradock'@'172.19.0.3' identified by 'laradock';
Query OK, 0 rows affected (0.03 sec)
 
mysql> \q
Bye

$ exit
```

# 3.workspaceコンテナの環境変数を編集する
workspaceコンテナに入りましょう。

```
$ docker exec -it laradock_workspace_1 /bin/bash

# cd /var/www/{laravelプロジェクト}
```

laravelプロジェクトの環境変数ファイルを修正します。

```:/var/www/{laravelプロジェクト}/.env

# 1で確認したデータベース名・ユーザー名・パスワードと2で確認したＩＰアドレスを入力する
DB_CONNECTION=mysql
DB_HOST=172.19.0.3
DB_PORT=3306
DB_DATABASE=laradock
DB_USERNAME=laradock
DB_PASSWORD=secret
```

異郷で準備完了です。
laravelでmigrationしてみましょう。


laravelでｍｉｇｒａｔｅ実行

```
/var/www/{laravelプロジェクト} # php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table
Migrating: 2019_03_23_181731_create_users_table
Migrated:  2019_03_23_181731_create_users_table
```


# 終わり
色々と環境と合わせないと動かないのは当たり前ですけど、初めての時苦労しました（私はw
お役に立てれば嬉しいです。