2017-05-24 3 views
0

J'essaie d'exécuter des conteneurs docker dans le pipeline Jenkins.Jenkins docker - exécution d'un conteneur, exécution de script shell etc

je suit dans mon Jenkinsfile:

stage('test') { 
steps { 
    script { 
    parallel (
     "gatling" : { 
      sh 'bash ./test-gatling.sh' 
    }, 
     "python" : { 
      sh 'bash ./test-python.sh' 
    }) 
       } 
     } 
     } 

Dans le test-gatling.sh j'ai ceci:

#!/bin/bash 
docker cp RecordedSimulation.scala denvazh/gatling:/RecordedSimulation.scala 
docker run -it -m denvazh/gatling /bin/bash 
ls 
./gatling.sh 

La commande ls est là juste pour le test, mais quand il est exécuté, il dresse la liste des fichiers et dossiers de mon référentiel github, plutôt que les fichiers à l'intérieur du conteneur denvazh/gatling. Pourquoi donc? Je pensais que la commande docker run -it [...] ouvrirait le conteneur afin que les commandes puissent être exécutées à l'intérieur?

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

Aussi, comment puis-je exécuter un conteneur et je viens de le faire fonctionner, sans exécuter des commandes à l'intérieur? (Dans le pipeline Jenkins ofc)

Je voudrais exécuter: docker run -d -p 8080:8080 -t [my_container] et y accéder sur le port 8080. Comment faire cela ...?

+0

Le problème est dans votre script bash. Seule la commande "/ bin/bash" est exécutée dans votre docker. Les lignes ci-dessous ne sont pas automatiquement exécutées dans la corbeille/bash que vous venez d'appeler. –

+0

J'ai souvent plusieurs 'exécution de docker-composer ..... une commande ...' l'un après l'autre dans mon Jenkinsfile. –

Répondre

0

Si quelqu'un a le même ou un problème similaire, voici les réponses:

  1. Utilisez la commande docker exec [name of container] et d'exécuter des commandes du terminal à l'intérieur d'un conteneur, ajoutez /bin/bash -c "[command]"

  2. Pour pouvoir accéder à un conteneur/application qui s'exécute sur un port à partir d'un second conteneur, au démarrage du deuxième conteneur, exécutez-le avec --net=host paramètre