Ich habe eine kleine .NET Core-Webanwendung in einem Docker-Container ausgeführt, die in Jenkins erstellt und bereitgestellt wird. Das Docker-Repository wird über Quay gehostet.Docker Build & Deploy auf Jenkins nimmt immer mehr Zeit in Anspruch
Anfangs dauerte es weniger als eine Minute, & den Container zu erstellen. Aber im Laufe der Zeit hat jeder Build & Deploy immer mehr Zeit in Anspruch genommen, bis zu über einer Stunde. Hier sind einige hoffentlich relevante Teile aus dem Anfang des Protokolls:
aus dem Repository von Git-Check-out:
...
+ ./build.sh
+ REPO=quay.io/my/dir
+ IMAGE=quay.io/my/dir:dddaca1fd347b1fabea342a6a65431b68f793ad4
+ docker pull quay.io/my/dir
Using default tag: latest
latest: Pulling from my/dir
Digest: sha256:9a654ad205764a668c1fc531c0972d1273b0920dc8282a8c7b6498482cee7975
Status: Image is up to date for quay.io/my/dir:latest
+ docker build -t quay.io/my/dir:dddaca1fd347b1fabea342a6a65431b68f793ad4 .
Sending build context to Docker daemon 121.9 kB
Sending build context to Docker daemon 121.9 kB
...
die Docker Bild schieben, denke ich:
...
+ '[' true = true ']'
+ docker tag -f quay.io/my/dir:dddaca1fd347b1fabea342a6a65431b68f793ad4 quay.io/my/dir:latest
+ '[' true = true ']'
+ docker tag -f quay.io/my/dir:dddaca1fd347b1fabea342a6a65431b68f793ad4 quay.io/my/dir:latest-master
+ docker tag -f quay.io/my/dir:dddaca1fd347b1fabea342a6a65431b68f793ad4 quay.io/my/dir:master-62
+ docker push quay.io/my/dir
The push refers to a repository [quay.io/my/dir] (len: 26)
...
Dann wird die Zeit meistens von folgenden Teilen eingenommen:
...
7db029aae55d: Preparing
7db029aae55d: Pushing
7db029aae55d: Pushed
55d4937daea6: Preparing
55d4937daea6: Pushing
55d4937daea6: Pushed
7ed278cf0e04: Preparing
7ed278cf0e04: Pushing
7ed278cf0e04: Pushed
master-49: digest: sha256:8ce1e...<more of the key>...90503 size: 21007
4c16f41d1cc1: Image already exists
8f1aae847e7a: Image already exists
28a352fdaf13: Image already exists
80151bfc7fc5: Image already exists
54c7eb98ce04: Preparing
54c7eb98ce04: Pushing
54c7eb98ce04: Pushed
b1131d0b29bb: Preparing
... more of the same
Ich bin ein Neuling zu Docker und würde einige freundliche Hilfe schätzen. Hier ist meine build.sh
und Dockerfile
:
build.sh
#!/bin/bash -ex
REPO=quay.io/my/dir
IMAGE=$REPO:$GIT_COMMIT
docker pull $REPO
docker build -t $IMAGE .
docker run --rm $IMAGE /bin/bash -c "cd /app/test/Project.Tests && dotnet test"
if [ "$TAG_LATEST" = true ]; then
docker tag -f $IMAGE $REPO:latest
fi
if [ "$TAG_LATEST_MASTER" = true ]; then
docker tag -f $IMAGE $REPO:latest-master
fi
# $TAG defined prior to running script
docker tag -f $IMAGE $REPO:$TAG
docker push $REPO
Dockerfile
FROM microsoft/dotnet:1.1.1-sdk
EXPOSE 5000
COPY . /app
WORKDIR /app
RUN cd src/Project && dotnet restore --configfile NuGet.config --no-cache
RUN cd test/Project.Tests && dotnet restore --no-cache
RUN dotnet build
WORKDIR /app/src/Project
CMD ["dotnet", "run", "--server.urls", "https://0.0.0.0:5000"]
Bild Geschichte
$ sudo docker history quay.io/my/dir
IMAGE CREATED CREATED BY SIZE COMMENT
0e58e5457605 4 days ago /bin/sh -C#(nop) CMD ["dotnet" "run" "--s... 0B
<missing> 4 days ago /bin/sh -C#(nop) WORKDIR /app/src/Project 0B
<missing> 4 days ago /bin/sh -c dotnet build 782kB
<missing> 4 days ago /bin/sh -c cd test/Project.Tests && dotn... 15.8MB
<missing> 4 days ago /bin/sh -c cd src/Project && dotnet rest... 2.4MB
<missing> 4 days ago /bin/sh -C#(nop) WORKDIR /app 0B
<missing> 4 days ago /bin/sh -C#(nop) COPY dir:c9cbed0051facc2... 62kB
<missing> 3 weeks ago /bin/sh -C#(nop) EXPOSE 5000/tcp 0B
<missing> 4 weeks ago /bin/sh -c mkdir warmup && cd warmup ... 297MB
<missing> 4 weeks ago /bin/sh -C#(nop) ENV NUGET_XMLDOC_MODE=skip 0B
<missing> 4 weeks ago /bin/sh -c curl -SL $DOTNET_SDK_DOWNLOAD_U... 290MB
<missing> 4 weeks ago /bin/sh -C#(nop) ENV DOTNET_SDK_DOWNLOAD... 0B
<missing> 4 weeks ago /bin/sh -C#(nop) ENV DOTNET_SDK_VERSION=... 0B
<missing> 4 weeks ago /bin/sh -c apt-get update && apt-get i... 1.64MB
<missing> 4 weeks ago /bin/sh -c apt-get update && apt-get insta... 123MB
<missing> 4 weeks ago /bin/sh -c apt-get update && apt-get insta... 44.6MB
<missing> 4 weeks ago /bin/sh -C#(nop) CMD ["/bin/bash"] 0B
<missing> 4 weeks ago /bin/sh -C#(nop) ADD file:f4e6551ac34ab44... 124MB
Können Sie die verschiedenen Layergrößen Ihrer Bilder mit dem Docker History anzeigen? Es wäre besonders nützlich, einige Versionen des Bildes zu vergleichen, wenn Sie sie haben, so dass wir sehen können, ob es bestimmte Schichten gibt, die mit der Zeit exponentiell größer werden. –
machst du saubere Checkouts von der Quellcodeverwaltung bevor du das COPY tust./App? Ich frage mich, ob zwischen den Builds ein paar große Sachen hängen. Ich nehme an, Sie verwenden Internet-Quay, aber wenn Sie Inhouse-Hosted Kai verwenden, funktioniert Ihre Registrierung möglicherweise nicht so gut, was die langsamen Pushs verursacht. – burnettk
@RobBlake Ich habe getan, was Sie sagten (ich hoffe) und fügte diese Informationen hinzu. Ich füge noch einige Teile des Logs hinzu, die helfen könnten. – Groppe