Help us understand the problem. What is going on with this article?

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...

lara_bell
あんだけ嫌いだったJavascriptがこんなに好きになるとは思っても見ませんでした。
https://lara-bell.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした