web-dev-qa-db-fra.com

Comment passer des arguments de conteneur Docker lors de l'exécution de l'image dans un fichier Jenkins

J'ai un Dockerfile qui se termine par

ENTRYPOINT ["node", "index.js"]
CMD ["--help"]

Le index.js Peut prendre quelques arguments différents et j'ai également besoin d'exposer un port pour le conteneur, donc si je l'exécute manuellement, je fais quelque chose comme:

docker run -p 3000:3000 my_container:latest --arg1 somearg --arg2 anotherarg

Comment faire cela dans un fichier Jenkins? Mon test communiquera avec ce conteneur, il doit donc être exécuté avant d'exécuter le test. J'utilise withRun() pour le faire fonctionner avant le test mais je ne vois pas comment spécifier le --arg1 somearg --arg2 anotherarg

stage('TestMicroservice') {
    //
    // HOW DO I SPECIFY '--arg1 somearg --arg2 anotherarg'?
    //
    docker.image("my_container:latest").withRun('-p 3000:3000') {
        sh 'npm run test-microservice'
    }
}
8
Sean Lynch

Vous pouvez utiliser le deuxième argument de withRun

.withRun('-p 3000:3000', '--arg1 somearg --arg2 anotherarg')
11
Tarun Lalwani

Utilisez .withRun('-p 3000:3000', '--arg1 arg1 --arg2 arg2'). La documentation pour cela se trouve dans le docker-workflow-plugin ici .

2
Sheshtawy

Vous pouvez également passer des arguments de conteneur en utilisant la méthode inside. Ci-dessous, un exemple tiré de https://jenkins.io/doc/book/pipeline/docker/#caching-data-for-containers (cliquez sur le lien Toggle Scripted Pipeline pour le voir)

node {
    /* Requires the Docker Pipeline plugin to be installed */
    docker.image('maven:3-Alpine').inside('-v $HOME/.m2:/root/.m2') {
        stage('Build') {
            sh 'mvn -B'
        }
    }
}
0
Moses