いつのまにやらdockerのmysqlがM1チップに対応してた。今までLaravel Sailを使おうとしたが、mysqlのために使うことができなかった。おそらくMacのOSが新しくなったからなのか。
というわけで、Laravel公式が勧めているLaravel Sailを使ってローカルに環境構築していく。思った以上に早く環境が作れて、今までLaradockなどで環境構築に苦戦してたのが嘘みたい。
なお、Dockerを使うがDockerの知識はあまり必要ない。自分もほとんど知らないが環境作った後にでも、軽く概念だけ理解しておくといいかも。
Dockerのインストール
Laravel Sailを使う前提としてDockerが入っていないと何もできないので、入っていない人はインストールしよう。
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/mac/install/
リンクから対応しているものをインストールしよう。
インストールしたら起動しておく。ツールバーから起動できる。
Laravelアプリのダウンロード
適当なフォルダを用意してターミナルから以下のコマンドを打つ。このコマンドを打つとexample-app
という名前でLaravelアプリを作成してくれる。example-app
の部分は好きな名前で大丈夫だ。
curl -s "https://laravel.build/example-app" | bash
ここでは、"https://laravel.build/example-app"
ファイルへアクセスしてそれを実行している。この中身はアクセスしてみると以下のように書かれている。
docker info > /dev/null 2>&1
# Ensure that Docker is running...
if [ $? -ne 0 ]; then
echo "Docker is not running."
exit 1
fi
docker run --rm \
-v "$(pwd)":/opt \
-w /opt \
laravelsail/php81-composer:latest \
bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium "
cd example-app
CYAN='\033[0;36m'
LIGHT_CYAN='\033[1;36m'
WHITE='\033[1;37m'
NC='\033[0m'
echo ""
if sudo -n true 2>/dev/null; then
sudo chown -R $USER: .
echo -e "${WHITE}Get started with:${NC} cd example-app && ./vendor/bin/sail up"
else
echo -e "${WHITE}Please provide your password so we can make some final adjustments to your application's permissions.${NC}"
echo ""
sudo chown -R $USER: .
echo ""
echo -e "${WHITE}Thank you! We hope you build something incredible. Dive in with:${NC} cd example-app && ./vendor/bin/sail up"
fi
はっきり言って何書かれているかはさっぱりわからないが以下の部分でLaravelを落としてきているらしい。
docker run --rm \
-v "$(pwd)":/opt \
-w /opt \
laravelsail/php81-composer:latest \
bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium "
cd example-app
またphp ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium "
の部分を見ると分かると思うが、mysqlなども使うことができる。つまり、mysqlなどのDBをわざわざ用意しなくていいというわけだ。めちゃくちゃ助かる〜!
デスクトップに適当なフォルダを用意して、上のコマンドをターミナルを開いて打つ。
ある程度進むと、パスワードを聞かれるので間違いないように打つ。このパスワードはPC自体にログインする時のものだ。一見キーボードの文字が反映されていないように見えるが、裏では打てているので気にせず入力しよう。
以下が出れば成功。
DLした後は、以下のコマンドを打って起動する。
cd example-app
./vendor/bin/sail up
成功すれば、以下のようになるはずだ。
この状態で http://localhostにアクセスすれば以下のように表示される。
たったこれだけのコードでmysql付きの環境が作れてしまう。
Aliasを作成する
一々、./vendor/bin/sail up
って打っていくのめんどくさいのでエイリアス作成しよう。以降はsailコマンドだけでOKになるぞ。以下のコマンドを打とう。
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
phpMyAdminを追加する
一応、mysqlまで含めた環境が秒で構築できたが、自分も含め初心者の内は、DBを可視化できるようにphpMyAdminが必要だと思う。もちろんこれも簡単に設計できる。
以下の記事を参考に、docker-compose.yml
ファイルにコードを追加していく。このymlファイルはDockerを使うときの設定ファイルみたいなものでここに使いたいサービスを記載していく。
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql:mysql
ports:
- 8080:80
environment:
MYSQL_USERNAME: '${DB_USERNAME}'
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
PMA_HOST: mysql
networks:
- sail
ymlファイルはインデント(字下げ)がめちゃめちゃ大事らしく少しでもずれてしまうとダメらしいので、しっかり揃えてあげよう。
もう一度sail up -d
コマンドでコンテナを立ち上げると、その中にphpmyadmin_1と書かれているはずだ。
後は、http://localhost:8080/にアクセスすると、ログイン画面が表示される。
ユーザー名とパスワードは.env
ファイルに記載されている。DB_USERNAME
とDB_PASSWORD
に書かれているのがそれだ。今回だとユーザー名がsailで、パスワードがpasswordだ。
管理画面からログインに成功すれば完了だ。
まとめ
- Dockerをインストールする。
curl -s "https://laravel.build/example-app" | bash
コマンドを好きなフォルダ上で実行する。- 落としてきたLaravelアプリ上に移動して
./vendor/bin/sail up
コマンドを打って起動する。 - phpMyAdminを入れたい場合はymlファイルに記載してから、再度上のコマンドで起動する。
ここまであっという間に環境構築できた。また、phpmyadminも使えるのはめちゃくちゃありがたい。
よくsailを使うと爆速で構築と書かれているのは嘘じゃないなあ。
自分もそうだが、初心者の方は確実に環境構築でつまづくと思うのでぜひ参考になれば幸いです。