はじめに
Laravelの環境構築をする際、素晴らしい環境構築の記事がありいつも参考にさせて頂いてます。
最強のLaravel開発環境をDockerを使って構築する
今回、上記で構築した環境を自分なりにアレンジしてみたいと思います。
施すアレンジは以下になります。
- docker環境の初期エイリアスの設定方法
- DB情報の変更方法
docker環境の初期エイリアスの設定方法
docker環境を作成した時点では環境にはエイリアス(ailas)の設定がされていません。
作成した段階でエイリアスを使えるようにするにはDockerfileファイルにエイリアスを記述する必要があります。
infra/docker/php/Dockerfileに下記のように追加したいエイリアスを一番下に追加して下さい。
RUN echo "alias ..='cd ..'" >> ~/.bashrc && \
echo "alias ...='cd ../..'" >> ~/.bashrc && \
echo "alias ll='ls -l'" >> ~/.bashrc && \
echo "alias lla='ls -la'" >> ~/.bashrc && \
echo "alias ..='cd ..'" >> ~/.bashrc && \
echo "alias ...='cd ../..'" >> ~/.bashrc && \
# laravel
echo "alias art='php artisan'" >> ~/.bashrc && \
echo "alias arts='art serve'" >> ~/.bashrc && \
echo "alias artr='art route:list'" >> ~/.bashrc && \
echo "alias migrate='art migrate'" >> ~/.bashrc && \
echo "alias seed='art db:seed'" >> ~/.bashrc && \
echo "alias rollback='art migrate:rollback'" >> ~/.bashrc && \
echo "alias fresh='migrate --fresh'" >> ~/.bashrc && \
echo "alias cc='php artisan config:clear && php artisan cache:clear && php artisan view:clear'" >> ~/.bashrc && \
# git
echo "alias gb='git branch'" >> ~/.bashrc && \
echo "alias gc='git checkout'" >> ~/.bashrc && \
echo "alias gcd='gc develop'" >> ~/.bashrc && \
echo "alias gcr='gc release'" >> ~/.bashrc && \
echo "alias gcs='gc stage'" >> ~/.bashrc && \
echo "alias gs='git status'" >> ~/.bashrc && \
echo "alias gp='git pull'" >> ~/.bashrc
追加したら、Dockerfileの変更を反映させるために一度buildし直します。
$ docker-compose build app
$ docker-compose up -d
これでdockerコンテナ内でエイリアスコマンドが使えるはずです。
DB情報の変更方法
環境を作った段階ですでにmysqlのDB情報はデフォルトで設定されています。
DB名を変えたい!ポートを自分で指定したい!という場合はdocker-compose.ymlファイルを編集する必要があります。
以下の例ではホストのDBポートを3331、DB名をkondateにしたいと思います。
version: "3.9"
volumes:
php-fpm-socket:
db-store:
services:
app:
build:
context: .
dockerfile: ./infra/docker/php/Dockerfile
volumes:
- type: volume
source: php-fpm-socket
target: /var/run/php-fpm
volume:
nocopy: true
- type: bind
source: ./backend
target: /work/backend
environment:
- DB_CONNECTION=mysql
- DB_HOST=db
- DB_PORT=3306
- DB_DATABASE=${DB_NAME:-kondate} #ここを書き換える
- DB_USERNAME=${DB_USER:-phper}
- DB_PASSWORD=${DB_PASS:-secret}
-----------------------------------
略
-----------------------------------
db:
build:
context: .
dockerfile: ./infra/docker/mysql/Dockerfile
ports:
- target: 3306
published: ${DB_PORT:-3331} #ホスト側のポート
protocol: tcp
mode: host
volumes:
- type: volume
source: db-store
target: /var/lib/mysql
volume:
nocopy: true
environment:
- MYSQL_DATABASE=${DB_NAME:-kondate} #ここを書き換える
- MYSQL_USER=${DB_USER:-phper}
- MYSQL_PASSWORD=${DB_PASS:-secret}
- MYSQL_ROOT_PASSWORD=${DB_PASS:-secret}
docker-compose.ymlファイルを反映させるために以下のコマンドを実行する
$ docker-compose up -d
この状態ではまだdatabaseとそれに伴うユーザーの権限がないので
DBのコンテナに入って、DBを作成とユーザーに権限を付与します。
# dbコンテナに入る
$ make db
# mysqlにログイン(rootユーザーで入る)
bash-4.2# mysql -u root -p
Enter password:secret
# DB作成
mysql> create database kondate;
# phperユーザーに権限を与える
mysql> GRANT ALL ON kondate.* TO phper;
# phperユーザーの権限を確認
mysql> show grants for phper;
これでDBの作成とユーザーの権限の付与は完了です。
tableプラスなどDBクライアントツールで以下の情報で接続可能です。
host:127.0.0.1
username:phper
port:3331
database:kondate
password:secret
appコンテナに入り、migrationを実行してみましょう!
kondateデータベースにテーブルが作成されるはずです。
終わりに
またアレンジしたら追加していこうと思います。