17

ジェンキン用のドッカービルドを適応させようとしています。私は docker-compose ファイルに従っており、各コンテナーを作成してそれらをリンクする Jenkinsfile を作成しています。私が直面している問題は、docker-compose ファイルが Dockerfile の場所ではないコンテキストを宣言していることです。私が理解している限り、jenkins はコンテキストを Dockerfile の場所に設定します。これにより、jenkinsfile または docker-compose ファイルがビルドされているかどうかに応じて、コピーされるファイルが異なる相対位置に配置されます。

フォルダ構造は次のとおりです。

workspace
    |-docker
        |-db
           |-Dockerfile
           |-entrypoint.sh

これは、Dockerfile が問題のファイルの COPY 命令を宣言する方法です。

COPY docker/db/entrypoint.sh /

これは、私の jenkinsfile がファイルを作成する方法です。私の知る限り、そのディレクトリにコンテキストを配置するのはどれですか

docker.build("db", "${WORKSPACE}/docker/db")

docker-compose ファイルは次のように宣言します。

db:
build:
  context: .
  dockerfile: docker/db/Dockerfile

これにより、コンテキストがプロジェクトのルートに配置されます。

Dockerfile の COPY 命令が変更されず、Jenkins と docker-compose の両方で有効になるように、jenkinsfile に docker-compose ファイルと同じコンテキストを使用するように指示する方法はありますか? それが不可能な場合、誰かが代替ソリューションを知っていますか?

4

6 に答える 6

32

docker-pipeline-plugin の以前のバージョン (1.6) をプルしていたことがわかりました。問題の関数は更新されて (1.7)、2 番目のパラメーターがコンテキスト外の Dockerfile の場所を指定できるようになりました。

私のJenkinsfileの更新されたステートメントは次のとおりです。

return docker.build("db", "-f docker/db/Dockerfile .")

これにより、開発者の docker-compose または Dockerfiles の予想されるコンテキストを変更することなく、コンテナーをビルドできます。

于 2016-08-01T19:52:57.643 に答える
0

context項目をOmnit するだけdocker-composeで、デフォルトで Dockerfile の場所になります。

于 2016-07-31T11:23:57.267 に答える