Ich verwende ein Google-Modell (Binärdatei: ca. 3 GB) in meiner Docker-Datei und verwenden Sie dann Jenkins zum Erstellen und Bereitstellen auf dem Produktionsserver. Der Rest des Codes wird aus dem Bitbucket-Repo gezogen.Umgang mit großen Binärdatei (3 GB) in Docker und Jenkins
Eine Beispielzeile aus der Docker-Datei, wo ich die Datei herunterladen und entzippen. Es passiert nur einmal, wenn dieser Befehl zwischengespeichert wird.
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
Alles funktioniert gut, wenn ich das Andockfenster auf meinem lokalen Computer baue und ausführe. Wenn ich jedoch die Patch-Version mache, um diese Änderungen über Jenkins auf den Produktionsserver zu übertragen, schlägt mein Build-Prozess am Ende fehl. Die Setup-, Build- und Testphasen funktionieren einwandfrei. Die Post-Build-Phase schlägt jedoch fehl. (Der Buildprozess überträgt Änderungen an den Repo, und gemäß den Protokollen funktionieren alle Befehle in der Docker-Datei auch einwandfrei.) Etwas passiert danach und ich erhalte den folgenden Fehler, wenn ich mir die Logs anschaue.
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"
Könnte es sein, dass die Datei zu groß ist?
Vor dem Hinzufügen dieser Datei funktionierte alles mit Docker und Jenkins auch gut.
Ich frage mich, ob es irgendwelche Einschränkungen in Docker/Jenkins in der Handhabung einer großen Datei wie folgt gibt? oder ich breche etwas so wie ich es annehme.
Update: die client_max_body_size Erhöhung löste dieses spezifischen Fehler. Allerdings bekomme ich einen weiteren Fehler bei ssh -o StrictHostKeyChecking=no [email protected] "cd /root/ourapi &&docker-compose pull api &&docker-compose -p somefolder up -d"
Der Docker-Compose Pull schlägt hier mit einem unerwarteten eof. Es versucht, das Bild herunterzuladen (1,6 GB), bricht es jedoch ab, nachdem es fast diese Größe erreicht hat, und versucht es dann erneut, was mit einem Fehler endet.
Was bringt mich zur alten Frage, wenn große Dateien in dieser Situation anders behandelt werden müssen?
Update 2: Das Problem behoben wurde. Ich musste die client_max_body_size auf 4 GB erhöhen und außerdem den Timeout-Parameter für das Ziehen des Repository von unserem eigenen Repository-Server erhöhen. Die Anpassung dieser beiden Parameter hat zur Lösung des Problems geführt.
Wenn Ihr jenkins Server nginx oder anderen Proxy-Server verwenden, versuchen Sie diese https://stackoverflow.com/questions/35922145/jenkins-artifactory-plugin-give-unexpected -character-when-trying-to-upload-large – Gangaraju
Erhöhung von client_max_body_size löste diesen spezifischen Fehler, aber jetzt bekomme ich Fehler mit Docker komponieren, die mich immer noch auf die Frage bringt, wenn große Dateien unterschiedlich behandelt werden müssen. – utengr
Überlegen Sie, eine Antwort zu schreiben - Fragen ohne Antworten scheinen offen zu sein. –