2017-07-27 10 views
5

私はドッカーファイルでGoogleモデル(バイナリファイル:約3GB)を使用していて、Jenkinsを使ってそれをビルドして運用サーバーに展開しています。残りのコードはビットバケットレポから引き出されます。dockerとJenkinsで大きなバイナリファイル(3 GB)を扱う

ドッカーファイルの行の例で、ファイルをダウンロードして解凍します。このコマンドがキャッシュされるため、一度だけ発生します。

FROM python:2.7.13-onbuild 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

ARG DEBIAN_FRONTEND=noninteractive 
RUN apt-get update && apt-get install --assume-yes apt-utils 
RUN apt-get update && apt-get install -y curl 
RUN apt-get update && apt-get install -y unzip 
RUN curl -o - https://s3.amazonaws.com/dl4j-distribution/GoogleNews-vectors-negative300.bin.gz \ 
| gunzip > /usr/src/app/GoogleNews-vectors-negative300.bin 

ローカルマシンでドッカーをビルドして実行すると、すべてうまく動作します。しかし、Jenkinsを通じてこれらの変更をプロダクションサーバーにプッシュするためにpatch-versionを作成すると、ビルドプロセスが最後に失敗します。セットアップ、ビルド、およびテストの段階はうまくいきます。ただし、ビルド後のフェーズは失敗します。 (ビルドプロセスはrepoへの変更をプッシュし、ログによれば、ドッカーファイル内のすべてのコマンドも正常に実行されます。)ログを見たときに何かが起こり、次のエラーが発生します。

18:49:27 654f45ecb7e3: Layer already exists 
18:49:27 2c40c66f7667: Layer already exists 
18:49:27 97108d083e01: Pushed 
18:49:31 35a4b123c0a3: Pushed 
18:50:10 1e730b4fb0a6: Pushed 
18:53:46 error parsing HTTP 413 response body: invalid character '<' 
looking for beginning of value: "<html>\r\n<head><title>413 Request 
`Entity Too Large</title></head>\r\n<body 
bgcolor=\"white\">\r\n<center>`<h1>413 Request 
Entity Too Large</h1></center>\r\n<hr> 
center>nginx/1.10.1</center>\r\n</body>\r\n</html>\r\n" 

ファイルが大きすぎますか?

このファイルを追加する前に、dockerとJenkinsのすべてが正常に動作していました。

docker/Jenkinsにこのような大きなファイルを処理する際に制限があるのでしょうか?または私はそれに近づいている何かを壊している。

更新: client_max_body_sizeを増やすと、この特定のエラーが解決されました。しかし、別のエラーが発生していますssh -o StrictHostKeyChecking=no [email protected] "cd /root/ourapi &&docker-compose pull api &&docker-compose -p somefolder up -d"

予期せぬeofでドッキング側の作成が失敗します。イメージ(1.6 GB)をダウンロードしようとしますが、ほぼそのサイズに近づいた後にキャンセルし、再試行してエラーを終了します。

この状況で大きなファイルを別の方法で処理する必要がある場合、私には古い質問がありますか?

アップデート2: 問題が解決されました。私はclient_max_body_sizeを4GBに増やす必要があり、独自のリポジトリサーバーからリポジトリを取得するためのタイムアウトパラメータを増やす必要があります。これらの2つのパラメータを調整すると、問題が解決されました。

+2

あなたジェンキンスサーバーの場合nginxのか、他のプロキシサーバを使用して、このhttps://stackoverflow.com/questions/35922145/jenkins-artifactory-plugin-give-unexpectedを試してみてください-character-when-trying-to-upload-large – Gangaraju

+0

client_max_body_sizeの値を大きくすると、この特定のエラーは解決されましたが、大きなファイルを別々に処理する必要がある場合でも、問題の原因となるdockerのエラーが発生します。 – utengr

+2

回答を書くことを検討してください - 答えのない質問は開いているようです。 –

答えて

1

問題は、主に以下の理由により発生した:

  • Ngnixサーバー構成でclient_max_body_sizeのデフォルト値は非常に低かったです。そのため、3.6 GBのファイルをアップロードできなかったので、この値を4 GBに増やしました。
  • 私たちはリポジトリ管理システム上でJettyサーバーを実行してHTTPトラフィックを提供しています。そのため、Jenkinsが関連するドッカーファイルをそこから取得するためにタイムアウトを増やす必要がありました。

この回答は主にこの特定の問題と関連しています。しかし、より良い方法でそのようなファイルを処理する方法に関する問題はまだ開いています。さらに、client_max_body_sizeを4GBに増やすのが一般的には良い考えであるかどうかは不明です。client_max_body_sizeため

関連ドキュメント: http://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size

関連する問題