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

Laradockでもfish shellを使いたい!!

やること

  • laradockで特にファイルをいじらずにlaravelの環境構築をするとデフォルトでzshが選択されているのでfishに変更します。
  • ついでに、config.fishと.vimrcもローカルのものを持ってきます。

対象読者

  • laravelの環境構築をサクッと終わらせてコーディングの学習に集中したい駆け出しエンジニア
  • laradockでfishを使いたいけどdockerに疎い人(fishに行き着く人はだいたいdockerfileイジれる気もしますが...)
  • 他の記事の通りにやるとworkspaceコンテナ内で/var/www/sample-projectのように余計に階層が増えて困っている人

作業

laradockを展開するディレクトリへ移動

cd laradockをインストールしたいディレクトリ

laradockをインストール

git clone https://github.com/Laradock/laradock.git
  • laradockというディレクトリができるはずです。

laradockディレクトリに移動

cd laradock

workspaceディレクトリにconfig.fishと.vimrcをコピー

cp ~/config/fish/config.fish ./workspace
cp ~/.vimrc ./workspace

./workspace/Dockerfileを編集

vim ./workspace/Dockerfile
  • 以下を追記してくだい。
  • 特に追記の場所は決まっていませんが、1388行目の後ろくらいにいれるといい感じになると思います。
  • Dockerfileの他の部分ではif文を書いていますが、この辺が少しわからなかったのでif文は端折っています。詳しい方教えていただけると助かります。
###########################################################################
# Fish:
###########################################################################

RUN apt-get install -y fish
RUN git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
RUN ~/.fzf/install
RUN curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish
RUN ["/usr/bin/fish", "-c", "fisher add jethrokuan/fzf"]
RUN cp /root/.fzf/bin/fzf /usr/bin/
COPY config.fish /root/.config/fish/

###########################################################################
# .vimrc:
###########################################################################
COPY ./.vimrc /root/

.envファイルを作成・編集

cp env-example .env
vim .env
  • APP_CODE_PATH_HOST の箇所を APP_CODE_PATH_HOST=../プロジェクト名と編集してください。
  • phpのバージョンを指定したい場合はPHP_VERSION の箇所を編集してください。
    • 直前の行に# Accepted values: 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6とバージョンが列挙されているのでこの中から指定するようにしましょう。
  • mysqlを使う場合
    • PMA_PORT の箇所を PMA_PORT=8081と編集してください
      • 他のポートと衝突しなければでなければ何でもいいです。
      • ポートとかよくわかんねって方はとりあえず8081にしておけばOKです
    • MYSQL_VERSION の箇所を MYSQL_VERSION=5.7と編集してください。
      • mysqlは8系だとやたらエラーに遭遇したのでこだわりがなければ5.7が無難です。
    • MYSQL_DATABASE, MYSQL_USER, MYSQL_PASSWORDlaravelに変更してください。
      • ここは自由に指定していただいて大丈夫です。
  • postgresqlを使う場合
    • POSTGRERS_DATABASE, POSTGRES_USER, POSTGRES_PASSWORDlaravelに変更してください。
      • ここも自由に指定していただいて大丈夫です。

コンテナの起動

  • ここまでお疲れさまでした。やっとコンテナを起動です。
  • ここではnginx, mysqlを起動します。必ず現在のディレクトリがlaradock内であることを確認してください。
docker-compose up -d nginx mysql

laravelのインストール

  • 今回は8系を入れます。
  • 他バージョンがいい人はバージョン指定方法を調べてください。
docker-compose exec workspace composer create-project laravel/laravel ./

プロジェクトディレクトリの確認

  • APP_CODE_PATH_HOSTAPP_CODE_PATH_HOST=../プロジェクト名と指定したので、プロジェクトディレクトリが作成されたか確認しましょう。
ls ..
  • また、作成されたディレクトリの中も確認しましょう。
ls ../プロジェクト名

○以下のように表示されればOK

README.md       bootstrap/      config/         phpunit.xml     routes/         tests/
app/            composer.json   database/       public/         server.php      vendor/
artisan*        composer.lock   package.json    resources/      storage/        webpack.mix.js

DBの設定

プロジェクトディレクトリに移動しましょう。

cd ../プロジェクト名

.envを編集

vim .env
  • mysqlを使う場合
    DB_CONNECTION=mysql

  • pgsqlを使う場合
    DB_CONNECTION=pgsql

  • DB_HOST127.0.0.1からlaradock_mysql_1に変更してください。

    • ホスト名はコンテナ名にしないといけません。
    • DBクライアント(mysql workbench, table plus, dbeaverなど)から接続するときは127.0.0.1と指定してください。
  • DB_DATABASE, DB_USER, DB_PASSWORDを先程指定した値に変更してください。

    • 記事の通りにしているならすべてlaravelです。
    • うまく行かない場合はユーザー、パスワードをrootに変えて試してください。

DBの接続確認

laradockディレクトリに戻ります。

cd ../laradock

それではマイグレーションをしてみましょう。

docker-compose exec workspace php artisan migrate

○以下のように表示されればOK
Nothing to migrate.

phpstormからコンテナへの接続

  • こちらの記事からdockerの設定を済ませてください。

  • 以下の画像の左側のContainersからworkspaceを右クリックし、execを選択してください。

  • 新しいコマンドを作成されるように促されるのでfishと入力します。

  • これでfishシェルでワークスペースコンテナで作業できます。
    この画像

最後に

  • わからないことや改善点など気軽にコメントください。
  • 気が向けばお返事します。
poposuke
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