問題1
最初の大きな問題は、次のエラーでした~/log/gitlab-workhorse.log
error: handleStoreLfsObject: copy body to tempfile: unexpected EOF
このエラーはgitlab 自体とは何の関係もありませんでしたが、最新バージョンの docker はデフォルトのコンテナー サイズを 100G/コンテナーから 10G/コンテナーに縮小することを決定しました。つまり、10GB を超えるファイルをアップロードしようとすると、gitlabアップロードされたファイルのサイズ (私の場合は 30GB) の一時ファイルを作成しようとし、その後、docker コンテナーにスペースが不足しているという上記のエラー メッセージが表示されます。
コンテナーのサイズを大きくする方法については、この優れたガイドに従いましたが、基本的には次のようになります。
sudo `which docker-compose` down
実行中のコンテナを停止します。
sudo vim /etc/systemd/system/docker.service
と追加
--sotrage-opt dm.basesize=100G
新しい基本イメージのデフォルト サイズとして。ドッカーに現在問題があるように見えるので、あなたはしなければなりません
sudo `which docker` rmi gitlab
あなたのイメージが と呼ばれていると仮定してgitlab
、そして
sudo `which docker-compose` up
画像を再度プルして、適切なサイズで作成します。
これでもうまくいかない場合はsudo systemctl restart docker.service
、docker が要求したとおりに動作しないように見える場合に役立つようです。
sudo docker exec -it gitlab df -h
次のようなものを生成する必要があります。
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/docker-253:1-927611-353ffe52e1182750efb624c81a3a040d5c054286c6c5b5f709bd587afc92b38f 100G 938M 100G 1% /
これらの設定のすべてが必要であると 100% 確信しているわけではありませんが、以下の問題 2 を解決する際に、これらもdocker-compose.ymlで設定する必要がありました。
- GITLAB_WORKHORSE_TIMEOUT=60m0s
- UNICORN_TIMEOUT=3600
- GITLAB_TIMEOUT=3600
問題 2
コンテナーのサイズを 10GB から 100GB に変更することに加えて、実行中のインスタンスに以下を追加する必要がありました。
この理由は、ファイルサイズが非常に大きく (30GB 以上)、ネットワーク速度が非常に遅い (10MB/秒) ため、アップロードにデフォルトの nginx よりも時間がかかり、504 Gateway Timeout
.
sudo docker exec -it /bin/bash
gitlab コンテナのvim.tiny /etc/nginx/nginx.conf
:
http {
...
client_max_body_size 500G;
proxy_connect_timeout 3600;
proxy_send_timeout 3600;
proxy_read_timeout 3600;
send_timeout 3600;
...
}
それからnginxを再起動しました。残念ながらservice restart nginx
うまくいきませんでした。
service stop nginx
service start nginx
注: すべての http 要求をキャッチするリバース プロキシをこのサーバーで実行しているため、確かではありませんが、コンテナーの nginx 構成に追加したすべての設定をプロキシ側で複製する必要があると思います。
私がステップアウトした場合、または手順の特定の部分を正確に行う方法について明確にしたい場合は、コメントを残して質問してください. これは王室の苦痛であり、この解決策で誰かを助けることを願っています.