2

複数のコンテナー (liberty コンテナー、oracle コンテナー、および maven jdk コンテナー) をリンクしようとしているパイプライン スクリプトがあります。

まず、Oracle コンテナーを作成します。

db = docker.build('oracle', 'docker/oracle').run("-p 49160:22 -p 49161:1521")

次に、問題なく動作するように見える私の liberty コンテナーにリンクします。

wlp = docker.build('liberty', 'docker/liberty').run("-p 9080:9080 --link=${db.id}:oracle")

しかし、それをMavenのものにリンクしようとすると:

mvn.inside('-v $M2_REPO:/m2repo --link=${db.id}:oracle ') {

ジェンキンスで次のエラーが発生します。

エラー: java.io.IOException: イメージ 'maven:3.3.9-jdk-8' の実行に失敗しました。エラー: docker: デーモンからのエラー応答: ${db.id} のコンテナーを取得できませんでした。「/usr/bin/docker-current run --help」を参照してください。

これは、insideではなく呼び出しを使用しているという事実に関連している可能性がありrunますか?

4

2 に答える 2

3

重引用符を使用しているため、変数はPipeline DSL スクリプト${db.id}内で置き換えられません (または、groovy speak: interpolated ) 。

代わりに二重引用符を使用するようにコマンドを調整します。

mvn.inside("-v \$M2_REPO:/m2repo --link=${db.id}:oracle") {

$M2_REPO補間したくないと思うので、 a を前に付けることでエスケープ\されます。

于 2017-01-11T07:51:26.680 に答える
0

どの言語かはわかりませんが、docker build は現在のディレクトリで "Dockerfile" というファイルを探します。ビルド しないようにこのイメージを実行する必要があるだけdocker.build('oracle', 'docker/oracle') で、既にイメージをビルドしているため、いくつかの問題があります。tag docker/oracle

于 2017-01-11T06:51:09.620 に答える