2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Dockerを使って構築した最強のLaravel開発環境をアレンジしてみた!

Posted at

はじめに

Laravelの環境構築をする際、素晴らしい環境構築の記事がありいつも参考にさせて頂いてます。
最強のLaravel開発環境をDockerを使って構築する

今回、上記で構築した環境を自分なりにアレンジしてみたいと思います。

施すアレンジは以下になります。

  • docker環境の初期エイリアスの設定方法
  • DB情報の変更方法

docker環境の初期エイリアスの設定方法

docker環境を作成した時点では環境にはエイリアス(ailas)の設定がされていません。
作成した段階でエイリアスを使えるようにするにはDockerfileファイルにエイリアスを記述する必要があります。

infra/docker/php/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にしたいと思います。

docker-compose.yml
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データベースにテーブルが作成されるはずです。

終わりに

またアレンジしたら追加していこうと思います。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?