IT

DockerのGitLabがPermission Errorで起動しないんだが。。

GitLab は GIt クライアントで無料 OSS もあり、利用している会社も多いのではないでしょうか。
先日、Docker で起動させようとしたら、Permission Error を吐きまくって、再起動を繰り返してしまい、起動しませんでした。

本記事は、私が解決した際の手順を記載しております。
同様の問題が発生している方は是非参考にして頂けたらと思います。

Docker GitLab の起動ログを解析する

最初に、発生しているエラーを確認します。

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

12a12b77a888 gitlab/xx   <中略>

まず、Docker コンテナ の状態を確認するコマンドを入力してください。
コンテナ ID を取得します。

次に、Docker コンテナの起動ログを確認します。

$ docker logs <コンテナ ID>

(中略)

Error executing action `run` on resource 'execute[/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-keys check-permissions]'

上記と同様のエラーが出ている場合、本記事の解決策を実行できます。

Docker GitLab の Permission Error の解決方法

解決策としては、公式ページの GitLab docs に記載されている解決策に則り実施しています。

まずは、GitLab の Docker コンテナを起動させます。
docker-compose を利用していない場合は、docker run を実施してください。

$ docker-compose up -d

次に、先程、起動ログを確認した時と同様に、Docker コンテナ状態を確認するコマンドを入力し、GitLab の コンテナ ID を取得します。

$ docker ps

そして、今回の解決策である Permission を更新するコマンドを実行します。

$ docker exec -it <コンテナ ID> update-permissions

この作業は、再起動を繰り返しているコンテナに対して行う操作のため、起動している最中に実行する必要 があるようです。
なので、タイミングが重要になります。。
コマンド実行時にコンテナが再起動してしまうと、コマンドも止まってしまうので、次の起動時にもう一度コマンド実行が必要です。

成功時はコンソール画面に権限変更のログが流れるので、今回の対象箇所の Permission が更新されたことを確認できれば良いのですが、
見当たらない場合でも一度、ログが出たら、解決しているか確認しても良いかもしれません。

ちなみに、私は、4回目で解決しました。

Docker GitLab の Permission Error の原因

GItLab の移行作業を行っていたのですが、イメージは古いまま行っていました。
公式ページの GitLab docs によると、古い GitLab の Docker images から更新したりすると発生する問題のようです。
古い GitLab のままにせず、定期的にバージョンの更新が必要ですね。。

どなたかの問題解決の参考になれば幸いです。

-IT