web-dev-qa-db-ja.com

Jenkinsfileでイメージを実行するときにDockerコンテナー引数を渡す方法

で終わるDockerfileがあります

_ENTRYPOINT ["node", "index.js"]
CMD ["--help"]
_

_index.js_はいくつかの異なる引数を取ることができ、コンテナのポートを公開する必要があるため、手動で実行する場合は次のようにします。

_docker run -p 3000:3000 my_container:latest --arg1 somearg --arg2 anotherarg
_

Jenkinsfileでこれを行うにはどうすればよいですか?テストはこのコンテナと通信するため、テストを実行する前に実行する必要があります。テストを実行する前にwithRun()を使用して実行していますが、_--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

WithRunの2番目の引数を使用できます

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

.withRun('-p 3000:3000', '--arg1 arg1 --arg2 arg2')を使用します。このドキュメントはdocker-workflow-plugin here にあります。

2
Sheshtawy

コンテナ引数を渡すもう1つの方法は、insideメソッドを使用することです。以下は https://jenkins.io/doc/book/pipeline/docker/#caching-data-for-containers からの例です([Toggle Scripted Pipeline]リンクをクリックして表示します)。

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