Skip to content

GitHttpServer broken by git/git-daemon Alpine update #105

Description

@harmonic-jamie

Affected version(s): at least 0.6.0 & 0.5.0.

When running the GitHttpServer, it fails when the Docker image is built with the following exception:

#5 [2/2] RUN  apk add --update nginx &&      apk add --update git-daemon &&      apk add --update fcgiwrap &&      apk add --update spawn-fcgi &&      apk add --update openssl &&      rm -rf /var/cache/apk/*
#5 0.312 fetch https://dl-cdn.alpinelinux.org/alpine/v3.19/main/x86_64/APKINDEX.tar.gz
#5 0.494 fetch https://dl-cdn.alpinelinux.org/alpine/v3.19/community/x86_64/APKINDEX.tar.gz
#5 0.771 (1/2) Installing pcre (8.45-r3)
#5 0.820 (2/2) Installing nginx (1.24.0-r16)
#5 0.842 Executing nginx-1.24.0-r16.pre-install
#5 0.897 Executing nginx-1.24.0-r16.post-install
#5 0.900 Executing busybox-1.36.1-r15.trigger
#5 0.905 OK: 26 MiB in 37 packages
#5 1.319 ERROR: unable to select packages:
#5 1.319   git-2.43.0-r0:
#5 1.319     breaks: git-daemon-2.43.4-r0[git=2.43.4-r0]
#5 1.319             git-daemon-2.43.4-r0[git=2.43.4-r0]
#5 1.319     satisfies: world[git=2.43.0-r0]
#5 ERROR: process "/bin/sh -c apk add --update nginx &&      apk add --update git-daemon &&      apk add --update fcgiwrap &&      apk add --update spawn-fcgi &&      apk add --update openssl &&      rm -rf /var/cache/apk/*" did not complete successfully: exit code: 2
------
 > [2/2] RUN  apk add --update nginx &&      apk add --update git-daemon &&      apk add --update fcgiwrap &&      apk add --update spawn-fcgi &&      apk add --update openssl &&      rm -rf /var/cache/apk/*:
0.820 (2/2) Installing nginx (1.24.0-r16)
0.842 Executing nginx-1.24.0-r16.pre-install
0.897 Executing nginx-1.24.0-r16.post-install
0.900 Executing busybox-1.36.1-r15.trigger
0.905 OK: 26 MiB in 37 packages
1.319 ERROR: unable to select packages:
1.319   git-2.43.0-r0:
1.319     breaks: git-daemon-2.43.4-r0[git=2.43.4-r0]
1.319             git-daemon-2.43.4-r0[git=2.43.4-r0]
1.319     satisfies: world[git=2.43.0-r0]
------
Dockerfile:3
--------------------
   2 |     
   3 | >>> RUN  apk add --update nginx && \
   4 | >>>      apk add --update git-daemon && \
   5 | >>>      apk add --update fcgiwrap && \
   6 | >>>      apk add --update spawn-fcgi && \
   7 | >>>      apk add --update openssl && \
   8 | >>>      rm -rf /var/cache/apk/*
   9 |     
--------------------
ERROR: failed to solve: process "/bin/sh -c apk add --update nginx &&      apk add --update git-daemon &&      apk add --update fcgiwrap &&      apk add --update spawn-fcgi &&      apk add --update openssl &&      rm -rf /var/cache/apk/*" did not complete successfully: exit code: 2

The issue is reproduced by running the GitHttpServerContainerTest within the repository itself.

[ERROR] com.github.sparsick.testcontainers.gitserver.http.GitHttpServerContainerTest.cloneWithAuthenticationFailedWithoutCredential(GitServerVersions)[1] -- Time elapsed: 4.910 s <<< ERROR!
org.testcontainers.containers.ContainerFetchException: Can't get Docker image: RemoteDockerImage(imageName=<resolving>, imagePullPolicy=DefaultPullPolicy(), imageNameSubstitutor=org.testcontainers.utility.ImageNameSubstitutor$LogWrappedImageNameSubstitutor@4b511e61)
        at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1364)
        at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:359)
        at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:330)
        at com.github.sparsick.testcontainers.gitserver.http.GitHttpServerContainerTest.cloneWithAuthenticationFailedWithoutCredential(GitHttpServerContainerTest.java:44)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
        at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1939)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
        at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
        at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
        at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
        at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
        at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
        at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: com.github.dockerjava.api.exception.DockerClientException: Could not build image: The command '/bin/sh -c apk add --update nginx && apk add --update git-daemon &&apk add --update fcgiwrap &&apk add --update spawn-fcgi && apk add --update openssl && rm -rf /var/cache/apk/*' returned a non-zero code: 2
        at com.github.dockerjava.api.command.BuildImageResultCallback.getImageId(BuildImageResultCallback.java:71)
        at com.github.dockerjava.api.command.BuildImageResultCallback.awaitImageId(BuildImageResultCallback.java:50)
        at org.testcontainers.images.builder.ImageFromDockerfile.resolve(ImageFromDockerfile.java:163)
        at org.testcontainers.images.builder.ImageFromDockerfile.resolve(ImageFromDockerfile.java:42)
        at org.testcontainers.utility.LazyFuture.getResolvedValue(LazyFuture.java:20)
        at org.testcontainers.utility.LazyFuture.get(LazyFuture.java:41)
        at org.testcontainers.shaded.com.google.common.util.concurrent.Futures$1.get(Futures.java:536)
        at org.testcontainers.images.RemoteDockerImage.getImageName(RemoteDockerImage.java:168)
        at org.testcontainers.images.RemoteDockerImage.resolve(RemoteDockerImage.java:72)
        at org.testcontainers.images.RemoteDockerImage.resolve(RemoteDockerImage.java:33)
        at org.testcontainers.utility.LazyFuture.getResolvedValue(LazyFuture.java:20)
        at org.testcontainers.utility.LazyFuture.get(LazyFuture.java:41)
        at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1362)
        ... 43 more

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions