エンジニアの卵の成長日記

https://blog.toru-takagi.dev/profile/

MacでDocker構築・laradockを使ってみる

はじめに
3ヶ月ぶりにバイトに来た
(1ヶ月ぶりだと思ってたけど、社員さんに3ヶ月ぶりだねと言われて時の流れの早さに驚愕した)
(それだけ卒業研究に集中していた証拠だろう)
久しぶりすぎなので、まずは環境構築からしてほしいとのこと
今作っているものは、Dockerでやることになったみたいなので、Dockerの構築をまずはしてほしいみたいなので
ここに書いていこうと思う
(リモートの人が2日前にこのシステムを作り、社員さん1人が手順書を見て環境構築に成功させた。)
(成功した社員さんは今日出社しておらず、他の社員さんに情報共有はされておらず。)
(自分以外の数人も同時に環境構築に取り掛かる)

Docker構築手順

まずは下記のリンクにアクセスして、これの手順に 従っていくみたい
docs.docker.com


英語やんけー
英語は苦手なんですよね

Docker for MacMacで実行するために必要なものが全部入っているみたい
安定verと開発中のやつ(次期搭載機能)?があるみたい
Mac OS X El Capitan 10.11以上でMMU仮想のサポートが必要みたい(4GB以上のRAMが必要)




とりあえず【Get Docker for Mac[Stable]】をクリックしてDocker.dmgをダウンロード
Docker.dmgをダブルクリックして起動

サイトと同じクジラさんが出てきました!
クジラさんをドラック&ドロップでApplicationsフォルダに入れます
クジラさんの横のApplicationsフォルダをダブルクリックすればFinderが起動する
たくさんのアプリの中にDocker(クジラのアイコン)があるのでダブルクリック


"Docker"を検証中... が長い
家だったら動画とか見るんだけど、バイト中だとやることないよね
こういう時に、ブログのはじめにとかを書いて行く



検証が終わると、質問のダイアログが出てくるので、開くを選択
クジラさんが笑いながらWELCOMEって言ってくれてる笑
(真顔でNextをクリック)


クジラさんがめっちゃムカつく顔で、アクセスの権限をくれみたいなことを言ってくるので
OKをクリックして、ログインパスワードを入力
そしたら上のメニューバーにクジラさんのアイコンが出てきた!

ドキュメントには「インストールが成功したぜ!」ってメッセージが出ると書いてあったが、
何も出ない。。。
まぁ、どんどん進めていきましょう


まずはAbout Dockerで最新バージョンか確認しよう!だって
でも最新バージョンが何かわからん。調べるのは面倒だからメモして終わりにしよう
Version 17.06.0-ce-mac19 (18663)
他にも色々文字列があるけど、なんの情報かわからないから、ここに載せておくのはやめにしよう

よーわからんけど、「Docker is running」ってなってるし成功したのだろう
次の作業に移ろう


Laradock

今回はLaravelを使ってるみたいだから、Laradockというのを使うみたい
下のサイトを見て、なんとなくどんなものか把握した

www.tam-tam.co.jp
qiita.com


とりあえずGitHubからプロジェクトをクローン
そして、プロジェクトのルートディレクトリに移動!

laradockというディレクトリがある
laradockに移動して、workspaceのコンテナを作成&起動を行う

$ cd laradock
$ docker-compose up -d apache2 postgres


エラーキタ━━━(゚∀゚).━━━!!!

ERROR:
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml

laradockの中身を見てみたら空だった
GitHubの方を見ても空

ようわからんから、自分でlaradockをGitHubから落としてこよう

$ git clone https://github.com/Laradock/laradock.git


もう一回実行だ!
わーお。警告だらけ。エラーは1つだけだった

ERROR: The Compose file './docker-compose.yml' is invalid because:


軽く調べたら、.envファイルを作成すればいいらしい
qiita.com


さっきのコマンドを打ったら、ビルドされ始めました!
(今ちょうど前の席のパートナーさんが同じ質問を社員さんにしている笑)
(パートナーさん:Gitから落として、コマンド打ったらymlがないってエラー出たんすけど!)


ビルドが終わった
Apache2だけエラーになってる。。。

$ docker ps

Apache2が起動していないね。。。


とりあえず先に進む
そして、あとで詰まったら戻ってくる(絶対につまるけどね)


workspaceのdocker内でcomposerをinstallするらしい

$ docker exec -ti laradock_workspace_1 bash
root@hogehogehoge:/var/www# composer install


色々インストールされてるー(棒)

インストール完了!
これでローカルホストに接続すれば、サイトが見れるらしい
接続!

「このサイトにアクセスできません」

だよねー
多分Apache2が入っていないのが問題(Apache2がないという問題だけだといいが。。)


とりあえずApache2のエラーを調べよう

Creating laradock_apache2_1 ...
Creating laradock_apache2_1 ... error


ERROR: for laradock_apache2_1  Cannot start service apache2: driver failed programming external connectivity on endpoint laradock_apache2_1 (c824ad2dbb1568399aca31dedf9bfa572e679c98470c7bea3ba45ecc19c34cfa): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE)

ERROR: for apache2  Cannot start service apache2: driver failed programming external connectivity on endpoint laradock_apache2_1 (c824ad2dbb1568399aca31dedf9bfa572e679c98470c7bea3ba45ecc19c34cfa): Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error (Failure EADDRINUSE)
ERROR: Encountered errors while bringing up the project.


軽く調べた感じ、80ポートはもう使ってるからエラーが起きたみたい
でも、このDockerのApacheのポート番号を指定する方法がわからん
もう少し調べてみよう


会社の手順書にはhttp://localhost:8001/publicにアクセスできればOKって書いてる
ビルドした時に8001にApacheがなるようになってるっぽいから、やっぱりymlとかに書いてあるのだろうか
パートナーさんがさっき質問してたから、ymlがGitHubに上がっていない問題の場合なら、社員さんが解決してくれるだろう

僕は自分で入れるlaradockを自分で入れるパターンだと信じて、Apacheのポート番号を指定する方法を調べていこう



やっぱ、色々調べたけど、GitHubのlaradockディレクトリが空なのが原因だと思う。。。
社員さんに聞いてみたけど、まだ解決していないみたい
とりあえずcomposer updateしといてと言われた
(心が折れたのを感じた)


1時間の休憩中にSlackで他の人のチャンネルの内容を読んでいたら、
GitHubに載っているREADME.mdの手順書は間違いで、正しい内容をSlackに載せてあった
(laradockディレクトリの中身が空になっていのはミスみたい)
このチャンネルは誰でも見れるようになっているが、チャンネル名はユーザの名前(高木徹の場合、チャンネル名はchannel_takagi_toru)で、その人に質問したい内容などを書く場所
それは気づかないっすよ。。。
社員さんには、GitHubのREADME.mdを読んでやってと言われたので、社員さんの中でも情報共有がうまくされていなかったみたい


新しい手順書通りやるが、やっぱりlaradockをGitHubから持ってくるみたいなので
さっきのApache2のエラーが復活
結局この戦いになるのか。。。

このエラーはやっぱりポートが埋まっている問題だった(当たり前だろ!)
解決方法は、上記の方でコピーして作成した.envファイルをいじる
APACHE_HOST_HTTP_PORT
ってのがあるから、それをApache2で使いたいポート番号に指定してあげれば大丈夫
これでdocker-composer up -d apache2が通る
(ずっとdocker-compose.ymlのポート番号をいじってた)

Creating laradock_apache2_1 ...
Creating laradock_apache2_1 ... error


今度こそうまくいってくれ!
workspaceにログインして、composer install

Do not run Composer as root/super user! See https://getcomposer.org/root for details
Composer could not find a composer.json file in /var/www
To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section

なんでやねーん!
Apache2入れる前はできてたじゃないですか


なんかよくわからないけど、できた
localhost:8001にアクセスして見ると。。。

「このサイトにアクセスできません」


なんでやねーん!
色々調べた結果、docker-compose.ymlでApacheのポートを変な風に書き換えてたのが問題
.envで書き換えた8001:8001 になっていた。
.envで書き換えた8001:80 に書き換えることで治りました


これで完璧だ
localhost:8001にアクセス

「Whoops, looks like something went wrong.」


qiita.com



よーし環境構築完了