ウェブ制作ウェブコンサルティング:POTLATCH|ポトラッチ

【Laradock】DockerでLaravelを構築したときの備忘録+Gitlab

Docker構築+Laravel構築したときのトラブル等について備忘録的な形で残しておきます。

サーバ環境
OS:CentOS8.0
メモリ:4GB

目次

1.Docker構築とLaravel

CentOS8.0でDockerはサポートされていないらしく、記事によってはインストール時にエラーがでました。

https://qiita.com/dora_2562/items/24691d3bec4c99c1d794
この内容でインストールが出来たので2020年5月現在はこの内容でインストールするとCentOS8.0にDockerをインストールすることができました。

Laravelについて色々調べていると、Laradockを使うのが一番楽そうでした。
Laradockを採用するにあたって、docker-composeをインストールする必要があります。

Dockerとdocker-composeは別物らしいです。
インストール方法は省略します。
http://docs.docker.jp/compose/install.html

Laradockは、Githubに上がっているのでGitインストールしてGitCloneすればOKです。
https://qiita.com/hosono/items/dd404f3f074722ef989d

これで、Docker上でLaravelを実行することができました。
なお、phpmyadminコンテナとWorkspaseコンテナでポート競合がおきてデフォルトだと両方実行することが出来ませんでした。
自分の場合はWorkspaseコンテナに入ってMysqlログインでやればいいかと思っているので特に直すということはしませんでした。

2.GitlabをDocker上に構築

https://docs.gitlab.com/omnibus/docker/

基本的にこの内容を実施すれば問題ありませんがポートの競合が起きるので変更しましょう。
今回は80と443はLaravelで使っているので、10080とします。

$GITLAB_HOMEはパスが通っていなかったので、手動で変更します。
最終的には下記のようにしました。

sudo docker run –detach \
–hostname ホスト名 \
–publish 10080:80 \
–name gitlab \
–restart always \
–volume /etc/gitlab/config:/etc/gitlab \
–volume /var/log/gitlab/logs:/var/log/gitlab \
–volume /var/opt/gitlab/data:/var/opt/gitlab \
–volume /var/opt/gitlab/.ssh/:/var/opt/gitlab/.ssh/ \
gitlab/gitlab-ce:latest

ただし、SSHキーの箇所を指定して公開鍵のアップロードもしっかり送っているのに、なぜかSSH認証でのGitcloneは不可でした。
このGitlab起動するのに2分から3分ほどかかります。
SSH認証はできないのでHttpでGitcloneする設定とします。

gitlab.rbでexternal_urlをポート含め変更するということでも一見良さそうですが、Dockerだと異なるようでexternal_urlを変更すると動作しなくなりました。
そこで、gitlab.ymlを変更します。
https://non-programmer-lab.com/change-gitlab-clone-url/

3.iptables変更でアクセス不能に

iptablesの変更をしたときに、ブラウザアクセスが出来なくなる事象が発生しました。
アクセスできなくなったのでコンテナ再起動させようとしてもエラーになってしまいました。

docker: Error response from daemon: failed to create endpoint ○○ on network bridge~~~~

で、色々調べた結果Dockerがおかしくなったら基本はsystemctl restart dockerで直るようです。
ネットワークファイルの再構成方法は下記のQiitaが参考になります。

https://qiita.com/miwato/items/9770a2a757d3f5e369a4

Gitlabコンテナなんかを入れていると再起動に相当時間がかかりますがばっちり直ります。リスタート中はサービスは止まってしまいます。
まあサービスが動いているときにiptables弄っちゃダメですよね(笑

4.Dockerを再起動したときにコンテナ再起動されない。

Qiitaばかりで申し訳ないですが、こちらの内容で自動起動の設定をします。
https://qiita.com/fault/items/a7c1cdd3f7f047ff7b11

これで、Dockerをリスタートしても大丈夫ですし、OSをRebootしてもサービスが自動起動されて上げ忘れが無くなります。

 

以上、Docker構築の備忘録でした。

モバイルバージョンを終了