MySQL
Laravel
Docker
LaraDock

LaradockでMySQLがどうしても立ち上がらない人あつまれー!

More than 1 year has passed since last update.

2017-07-23日記事の一部を変更しました。


はじめに

はじめまして、いつもQiitaでいろんな方の投稿を見させて頂いています。

今回環境構築でどっぷりハマったので備忘録+誰かが見てくれたらいいなと思って書いてみます。


結論

~/.laradock/data/mysql下のファイルが壊れている可能性があります!

Delete or Rename後

docker-compose up -d nginx mysqlで幸せになれるかも?


->ERROR 1146 (42S02): Table 'information_schema.SCHEMATA' doesn't exist #1047 - 引用

Removed image $ docker rmi laradock_mysql

Remove container $ docker rm laradock_mysql

Located DATA_SAVE_PATH=~/.laradock/data in .env file

Deleted mysql folder

Modified laradock/mysql/Dockerfile


laradock/mysql/Dockerfile

FROM mysql:5.7

MAINTAINER Mahmoud Zalt <mahmoud@zalt.me>
RUN chown -R mysql:root /var/lib/mysql/
ADD my.cnf /etc/mysql/conf.d/my.cnf
CMD ["mysqld"]
EXPOSE 3306

Buil docker-compeer up -d mysql nginx

I hope I didn't miss anything in the steps.



たぶんこれが原因

Special Thanks @yamazakiさん

ERROR 1146 (42S02): Table 'information_schema.SCHEMATA' doesn't exist #1047

docker-compose stopをしてなくて再起動か削除を行ったせい。

->MySQL8.0からMySQL5.7にDockerfileを変更したせい。


私のスペック

PHP初心者/Docker初心者/Laravel初心者

完全に初心者なので間違っているや不適切なコトがありましたらコメントくれたらうれしいです。


環境

macOS Sierra 10.12.5

Docker for mac 17.06.0-ce-mac19

Laradock v5.5.1

Laravel v5.4


前置き

インストールの詳細は他の方が丁寧に解説されているのでそちらを参照ください。

インストール後にMySQLがどうしても立ち上がらない人参考にしてください。


問題発生

# 経緯をコマンドだけ記載

git clone --depth=1 -b v5.5.1 https://github.com/LaraDock/laradock.git
cd laradock
cp env-example .env
vi .env
NGINX_HOST_HTTP_PORT=8080 #変更

# MySQLの設定
MYSQL_DATABASE=laradock #変更
MYSQL_USER=laradock #変更
MYSQL_PASSWORD=secret #変更
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root


laradock/nginx/sites/default.conf

server_name localhost; #変更

root /var/www/laravel/public; #変更


/laradock

# Laravelインストール後

docker-compose up -d nginx mysql

docker-compose ps

Name Command State Ports
-------------------------------------------------------------------------------------------------------------
laradock_applications_1 /true Exit 0
laradock_mysql_1 docker-entrypoint.sh mysqld Exit 2
laradock_nginx_1 nginx Up 0.0.0.0:443->443/tcp, 0.0.0.0:8088->80/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp


MySQLが立ち上がらない。。。

ちなみにこの状態でもlocalhost:8080でLaravel画面やresources/views関連のページは表示できます。

ただMySQLが立ち上がっていないため

php artisan migrateなどのコマンドが通らず、Model?Controller?関連の開発が出来ません。


ここは奮闘記なので基本読まなくてOK

Docker run->起動せず

Laradock再インストール->改善せず

Docker for mac再インストール->改善せず

この時点でDockerのことが半分嫌いになってます(´;ω;`)

あと半分は開発環境をコンテナで管理したいという思いだけ。

先人の知恵で公式Document見なさいと言ってたのを思い出す。

・Laradock.ioのDocumentを見ながら(´・ω・`)

https://github.com/laradock/laradock/ のコード見ながら(´・ω・`)

・Dockerの公式Document見ながら(´;ω;`)

もう何もかも忘れたくなりmac再インストールしたいと思った時、

DockerはDockerコンテナの起動と廃棄を前提にしていることを思い出す。

mac上のMySQLも権限関係で起動しないことがあったことを思い出す。

DockerのMySQLファイルはどこあるんだ?


laradock/docker-compose.yml

### MySQL Container #########################################

mysql:
build:
context: ./mysql
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- TZ=${WORKSPACE_TIMEZONE}
volumes:
- ${DATA_SAVE_PATH}/mysql:/var/lib/mysql # <-これっぽいが${DATA_SAVE_PATH}ってなんだ?
- ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend



laradock/.env

### Data Path:

# For all storage systems.

DATA_SAVE_PATH=~/.laradock/data # <-これだ!


user配下の.ファイルにMySQLファイルが永続化されていたようです。

ってことで私は諸悪の根源である~/.laradockをポイして、

docker-compose up -d nginx mysqlで改善!!!(`・ω・´)

MySQL内にデータがある人はバックアップしてくださいね。

最後まで読んでいただきありがとうございました!

備忘録


laradock/.env

### Data Path:

# For all storage systems.

# DATA_SAVE_PATH=~/.laradock/data
DATA_SAVE_PATH=.laradock/data # <-これでlaradock内で管理できます。プロジェクト毎に管理したい人用



最後に一言!

docker-compose stopこれ忘れない!

Log確認!!これ忘れない!<-2017-07-23追加


参考

ERROR 1146 (42S02): Table 'information_schema.SCHEMATA' doesn't exist #1047

DockerでLaravel(Apache+php-fpm+mysql)を構築する手順書 - Qiita

Laradock on macでLaravelの開発環境をサクッと整備 - Qiita

Laravel : laradockでlaravelの開発環境構築 | DN-Web64

Laravel使った開発にLaradockを使うというのはどうだろう - Qiita

Laradock 公式ページ

Laradock 公式github

etc...