testcontainers / testcontainers/testcontainers-java

DockerComposeContainer integration with Testcontainer throws Container startup failed error

Ouverte
#5,477 5 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

area/bitbucket-pipelines
Langage dominant
Java
Étoiles
8.7k
Forks
1.9k
Merge moyen
2 j 17 h
PR mergées (30 j)
9

Description

I have code setup for launching Selenium GRID with the help of Testcontainer. When I run it on local system it works fine but when I do the same on bitbucket pipeline it failed to start container.

Here I used the code to launch Selenium GRID setup:

DockerComposeContainer environment = new DockerComposeContainer(new File("docker-compose-v3-scale-chrome-no-port.yml"))
				.withExposedService("hub", 4444, Wait.forListeningPort());
				environment.start();

Here is my bitbucket pipeline file:

image: maven:3.6.3
pipelines:
  default:
      - step:
          size: 2x # Double resources available for this step.
          caches:
            - maven                     
          name: Build and Test
          #runs-on: 
            #- 'self.hosted'
            #- 'apirunner1'
          script:
            - export TESTCONTAINERS_RYUK_DISABLED=true
            - mvn clean test -DClassesToRun="LoginSanitySuite_New~LoginSanitySuite" -DCountriesValue="US~CA" -DBROWSER="CHR_GRID"  -DThreadCount="5" -DEnvironment="PROD"
            #- mvn clean test
          services:
            - docker 
          artifacts:
            - ExtentReports/index.html
            - process-logs.txt
            - memory-logs.txt
            - docker-event-logs.txt

definitions:
  services:
    docker:
      memory: 3072

=====================================

Here is my docker compose file

version: "2"
services:

  hub:
    image: selenium/hub:3.141.59
    ports:
      - "4443:4444"

    environment:
      GRID_MAX_SESSION: 28
      GRID_BROWSER_TIMEOUT: 3000
      GRID_TIMEOUT: 3000

  chrome1:
    image: selenium/node-chrome-debug:3.141.59
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - hub
    environment:
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
      NODE_MAX_SESSION: 3
      NODE_MAX_INSTANCES: 3
    links:
      - hub

  chrome2:
    image: selenium/node-chrome-debug:3.141.59
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - hub
    environment:
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
      NODE_MAX_SESSION: 3
      NODE_MAX_INSTANCES: 3
    links:
      - hub 

===================== Adding docker error log for reference ===================

[WARN  tini (8)] Tini is not running as PID 1 and isn't registered as a child subreaper.
Zombie processes will not be re-parented to Tini, so zombie reaping won't work.
To fix the problem, use the -s option or set the environment variable TINI_SUBREAPER to register Tini as a child subreaper, or run Tini as PID 1.
time="2022-06-07T13:01:15.955207346Z" level=warning msg="could not change group /var/run/docker.sock to docker: group docker not found"
time="2022-06-07T13:01:15.955824052Z" level=warning msg="Binding to IP address without --tlsverify is insecure and gives root access on this machine to everyone who has access to your network." host="tcp://0.0.0.0:2375"
time="2022-06-07T13:01:15.955854686Z" level=warning msg="Binding to an IP address, even on localhost, can also give access to scripts run in a browser. Be safe out there!" host="tcp://0.0.0.0:2375"
time="2022-06-07T13:01:16.956791997Z" level=warning msg="Binding to an IP address without --tlsverify is deprecated. Startup is intentionally being slowed down to show this message" host="tcp://0.0.0.0:2375"
time="2022-06-07T13:01:16.956837066Z" level=warning msg="Please consider generating tls certificates with client validation to prevent exposing unauthenticated root access to your network" host="tcp://0.0.0.0:2375"
time="2022-06-07T13:01:16.956851394Z" level=warning msg="You can override this by explicitly specifying '--tls=false' or '--tlsverify=false'" host="tcp://0.0.0.0:2375"
time="2022-06-07T13:01:16.956860569Z" level=warning msg="Support for listening on TCP without authentication or explicit intent to run without authentication will be removed in the next release" host="tcp://0.0.0.0:2375"
time="2022-06-07T13:01:32Z" level=warning msg="deprecated version : `1`, please switch to version `2`"
time="2022-06-07T13:01:32.087434258Z" level=warning msg="failed to load plugin io.containerd.snapshotter.v1.devmapper" error="devmapper not configured"
time="2022-06-07T13:01:32.088168834Z" level=warning msg="could not use snapshotter devmapper in metadata plugin" error="devmapper not configured"
time="2022-06-07T13:01:32.092830542Z" level=warning msg="failed to load plugin io.containerd.internal.v1.opt" error="mkdir /opt/containerd: read-only file system"
time="2022-06-07T13:01:32.092941675Z" level=error msg="failed to initialize a tracing processor \"otlp\"" error="no OpenTelemetry endpoint: skip plugin"
time="2022-06-07T13:01:32.186431041Z" level=warning msg="Your kernel does not support CPU realtime scheduler"
time="2022-06-07T13:01:32.186477358Z" level=warning msg="Your kernel does not support cgroup blkio weight"
time="2022-06-07T13:01:32.186485322Z" level=warning msg="Your kernel does not support cgroup blkio weight_device"
time="2022-06-07T13:02:28Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/info
time="2022-06-07T13:02:29Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/version
time="2022-06-07T13:02:29Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/images/json
time="2022-06-07T13:02:29Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/images/selenium%2Fhub:3.141.59/json"
time="2022-06-07T13:02:29.233108463Z" level=error msg="Handler for GET /v1.32/images/selenium%2Fhub:3.141.59/json returned error: no such image: selenium/hub:3.141.59: No such image: selenium/hub:3.141.59"
time="2022-06-07T13:02:29Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri="/v1.32/images/create?fromImage=selenium%2Fhub&tag=3.141.59"
time="2022-06-07T13:02:47Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/images/selenium%2Fhub:3.141.59/json"
time="2022-06-07T13:02:47Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/images/selenium%2Fnode-chrome-debug:3.141.59/json"
time="2022-06-07T13:02:47.282486064Z" level=error msg="Handler for GET /v1.32/images/selenium%2Fnode-chrome-debug:3.141.59/json returned error: no such image: selenium/node-chrome-debug:3.141.59: No such image: selenium/node-chrome-debug:3.141.59"
time="2022-06-07T13:02:47Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri="/v1.32/images/create?fromImage=selenium%2Fnode-chrome-debug&tag=3.141.59"
time="2022-06-07T13:03:31Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/images/selenium%2Fnode-chrome-debug:3.141.59/json"
time="2022-06-07T13:03:31Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/images/docker%2Fcompose:1.29.2/json"
time="2022-06-07T13:03:31.170263975Z" level=error msg="Handler for GET /v1.32/images/docker%2Fcompose:1.29.2/json returned error: no such image: docker/compose:1.29.2: No such image: docker/compose:1.29.2"
time="2022-06-07T13:03:31Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri="/v1.32/images/create?fromImage=docker%2Fcompose&tag=1.29.2"
time="2022-06-07T13:03:36Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/images/docker%2Fcompose:1.29.2/json"
time="2022-06-07T13:03:36Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/images/alpine:3.14/json"
time="2022-06-07T13:03:36.861680333Z" level=error msg="Handler for GET /v1.32/images/alpine:3.14/json returned error: no such image: alpine:3.14: No such image: alpine:3.14"
time="2022-06-07T13:03:36Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri="/v1.32/images/create?fromImage=alpine&tag=3.14"
time="2022-06-07T13:03:38Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/images/alpine:3.14/json"
time="2022-06-07T13:03:38Z" level=info msg="Container create request." ArgsEscaped=false AttachStderr=false AttachStdin=false AttachStdout=false ExposedPorts="map[]" Healthcheck="<nil>" Labels="map[org.testcontainers:true org.testcontainers.sessionId:04dbde20-21a0-48c2-aed5-7cb3b50092ad]" MacAddress= NetworkDisabled=false OnBuild="[]" OpenStdin=false StdinOnce=false StopSignal= StopTimeout="<nil>" Tty=false plugin=pipelines
time="2022-06-07T13:03:38Z" level=info msg="Container create request." AutoRemove=false BlkioDeviceReadBps="[]" BlkioDeviceReadIOps="[]" BlkioDeviceWriteBps="[]" BlkioDeviceWriteIOps="[]" BlkioWeight=0 BlkioWeightDevice="[]" CPUCount=0 CPUPercent=0 CPUPeriod=0 CPUQuota=0 CPURealtimePeriod=0 CPURealtimeRuntime=0 CPUShares=0 CapAdd="[]" CapDrop="[]" Cgroup= CgroupParent= ConsoleSize="[0 0]" ContainerIDFile= CpusetCpus= CpusetMems= DNS="[]" DNSOptions="[]" DNSSearch="[]" DeviceCgroupRules="[]" Devices="[]" ExtraHosts="[]" GroupAdd="[]" IOMaximumBandwidth=0 IOMaximumIOps=0 Init="<nil>" IpcMode= Isolations= KernelMemory=0 Links="[]" LogConfig="{ map[]}" MaskedPaths="[]" Memory=0 MemoryReservation=0 MemorySwap=0 MemorySwappiness="<nil>" Mounts="[]" NanoCPUs=0 NetworkMode=default OomKillDisable="<nil>" OomScoreAdj=0 PidMode= PidsLimit="<nil>" PortBindings="map[]" Privileged=false PublishAllPorts=false ReadOnlyPaths="[]" RestartPolicy="{ 0}" Runtime= SecurityOpt="[]" ShmSize=0 StorageOpt="map[]" Sysctls="map[]" Ulimits="[]" UsernsMode= VolumeDriver= VolumesFrom="[]" plugin=pipelines
time="2022-06-07T13:03:38Z" level=info msg="Pipelines plugin request authorization." allowed=false method=POST plugin=pipelines uri=/v1.32/containers/create
time="2022-06-07T13:03:38.403293133Z" level=error msg="AuthZRequest for POST /v1.32/containers/create returned error: authorization denied by plugin pipelines: -v only supports $BITBUCKET_CLONE_DIR and its subdirectories"
time="2022-06-07T13:03:38Z" level=info msg="Container create request." ArgsEscaped=false AttachStderr=false AttachStdin=false AttachStdout=false ExposedPorts="map[]" Healthcheck="<nil>" Labels="map[org.testcontainers:true org.testcontainers.sessionId:04dbde20-21a0-48c2-aed5-7cb3b50092ad]" MacAddress= NetworkDisabled=false OnBuild="[]" OpenStdin=false StdinOnce=false StopSignal= StopTimeout="<nil>" Tty=false plugin=pipelines
time="2022-06-07T13:03:38Z" level=info msg="Container create request." AutoRemove=false BlkioDeviceReadBps="[]" BlkioDeviceReadIOps="[]" BlkioDeviceWriteBps="[]" BlkioDeviceWriteIOps="[]" BlkioWeight=0 BlkioWeightDevice="[]" CPUCount=0 CPUPercent=0 CPUPeriod=0 CPUQuota=0 CPURealtimePeriod=0 CPURealtimeRuntime=0 CPUShares=0 CapAdd="[]" CapDrop="[]" Cgroup= CgroupParent= ConsoleSize="[0 0]" ContainerIDFile= CpusetCpus= CpusetMems= DNS="[]" DNSOptions="[]" DNSSearch="[]" DeviceCgroupRules="[]" Devices="[]" ExtraHosts="[]" GroupAdd="[]" IOMaximumBandwidth=0 IOMaximumIOps=0 Init="<nil>" IpcMode= Isolations= KernelMemory=0 Links="[]" LogConfig="{ map[]}" MaskedPaths="[]" Memory=0 MemoryReservation=0 MemorySwap=0 MemorySwappiness="<nil>" Mounts="[]" NanoCPUs=0 NetworkMode=default OomKillDisable="<nil>" OomScoreAdj=0 PidMode= PidsLimit="<nil>" PortBindings="map[]" Privileged=false PublishAllPorts=false ReadOnlyPaths="[]" RestartPolicy="{ 0}" Runtime= SecurityOpt="[]" ShmSize=0 StorageOpt="map[]" Sysctls="map[]" Ulimits="[]" UsernsMode= VolumeDriver= VolumesFrom="[]" plugin=pipelines
time="2022-06-07T13:03:38Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri=/v1.32/containers/create
time="2022-06-07T13:03:38Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/start
time="2022-06-07T13:03:38.741176721Z" level=info msg="loading plugin \"io.containerd.event.v1.publisher\"..." runtime=io.containerd.runc.v2 type=io.containerd.event.v1
time="2022-06-07T13:03:38.741273225Z" level=info msg="loading plugin \"io.containerd.internal.v1.shutdown\"..." runtime=io.containerd.runc.v2 type=io.containerd.internal.v1
time="2022-06-07T13:03:38.741291791Z" level=info msg="loading plugin \"io.containerd.ttrpc.v1.task\"..." runtime=io.containerd.runc.v2 type=io.containerd.ttrpc.v1
time="2022-06-07T13:03:38.753802513Z" level=info msg="starting signal loop" namespace=moby path=/run/docker/containerd/daemon/io.containerd.runtime.v2.task/moby/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346 pid=643 runtime=io.containerd.runc.v2
time="2022-06-07T13:03:39Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:40Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:40Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:40Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:40Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:40Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:40Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:40Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:40Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:41Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:41Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:41Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:41Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:41Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:41Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:41Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:41.865694516Z" level=warning msg="cleaning up after shim disconnected" id=cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346 namespace=moby
time="2022-06-07T13:03:41.941645427Z" level=warning msg="cleanup warnings time=\"2022-06-07T13:03:41Z\" level=info msg=\"starting signal loop\" namespace=moby pid=705 runtime=io.containerd.runc.v2\n"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri=/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/json
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/logs?stdout=true&stderr=true&since=0"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346/logs?stdout=true&stderr=true&since=0"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/containers/json?all=true&filters=%7B%22label%22%3A%5B%22org.testcontainers%3Dtrue%22%2C%22org.testcontainers.sessionId%3D04dbde20-21a0-48c2-aed5-7cb3b50092ad%22%5D%7D"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=DELETE plugin=pipelines uri="/v1.32/containers/cb244da326dccd9402ed0c409be08b97f5f3b3e337b01cc194f5ae96216fb346?v=true&force=true"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=GET plugin=pipelines uri="/v1.32/containers/json?all=true&filters=%7B%22label%22%3A%5B%22com.docker.compose.project%3Dnx57zmchnxzx%22%5D%7D"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri="/v1.32/networks/prune?filters=%7B%22label%22%3A%5B%22org.testcontainers%3Dtrue%22%2C%22org.testcontainers.sessionId%3D04dbde20-21a0-48c2-aed5-7cb3b50092ad%22%5D%7D"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri="/v1.32/networks/prune?filters=%7B%22label%22%3A%5B%22com.docker.compose.project%3Dnx57zmchnxzx%22%5D%7D"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri="/v1.32/volumes/prune?filters=%7B%22label%22%3A%5B%22org.testcontainers%3Dtrue%22%2C%22org.testcontainers.sessionId%3D04dbde20-21a0-48c2-aed5-7cb3b50092ad%22%5D%7D"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri="/v1.32/volumes/prune?filters=%7B%22label%22%3A%5B%22com.docker.compose.project%3Dnx57zmchnxzx%22%5D%7D"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri="/v1.32/images/prune?filters=%7B%22label%22%3A%5B%22org.testcontainers%3Dtrue%22%2C%22org.testcontainers.sessionId%3D04dbde20-21a0-48c2-aed5-7cb3b50092ad%22%5D%7D"
time="2022-06-07T13:03:42Z" level=info msg="Pipelines plugin request authorization." allowed=true method=POST plugin=pipelines uri="/v1.32/images/prune?filters=%7B%22label%22%3A%5B%22com.docker.compose.project%3Dnx57zmchnxzx%22%5D%7D"

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par l’utilisation de DockerComposeContainer et du fichier docker-compose-v3-scale-chrome-no-port.yml fourni, puis reproduisez-la avec la configuration du pipeline Bitbucket et la commande Maven. Examinez les journaux de démarrage autour de la création des conteneurs et de la disponibilité du service. La tâche est terminée lorsque l’environnement compose de Selenium Grid démarre correctement dans le pipeline et que le service hub exposé devient disponible.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
docker, docker-compose, java
Domaine
ci-cd, devops, testing-qa
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.