Jenkins CloudBees Dockerカスタムビルド環境プラグインを使用する場合はDockerFileを使用できません -- jenkins フィールド と docker フィールド と jenkins-plugins フィールド と dockerfile フィールド 関連 問題

Not able to use a Dockerfile when using Jenkins CloudBees Docker Custom Build Environment Plugin












4
vote

問題

日本語

ここからのガイドから「DockerFileからのBuild」を使用して「DockerFileの内側に構築しよう」を試みました CloudBees Dockerカスタムビルド環境プラグイン

私はワークスペースのルート(/ var / lib / jenkins / jobs / lumi / workspace)にDockerFileを置きました。その後、ビルドがトリガーされると、以下のエラーが発生しました。 DockerFileを見つけることができたと思いますが、何らかの理由でイメージを構築できませんでした。

<事前> <コード> Build Docker image from ./Dockerfile ... $ docker build --tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 --file Dockerfile /var/lib/jenkins/jobs/lumi/workspace The Dockerfile (Dockerfile) must be within the build context (/var/lib/jenkins/jobs/lumi/workspace) FATAL: Failed to build docker image from project Dockerfile java.lang.RuntimeException: Failed to build docker image from project Dockerfile at com.cloudbees.jenkins.plugins.docker_build_env.Docker.buildImage(Docker.java:116) at com.cloudbees.jenkins.plugins.docker_build_env.DockerfileImageSelector.prepareDockerImage(DockerfileImageSelector.java:47) at com.cloudbees.jenkins.plugins.docker_build_env.DockerBuildWrapper.setUp(DockerBuildWrapper.java:126) at hudson.model.Build$BuildExecution.doRun(Build.java:156) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537) at hudson.model.Run.execute(Run.java:1741) at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) at hudson.model.ResourceController.execute(ResourceController.java:98) at hudson.model.Executor.run(Executor.java:381) Finished: FAILURE

以下はDockerFileの内容です:

<事前> <コード> FROM php:5.6.11-apache

事前にありがとうございました。

英語

I tried to use "Build inside a docker container" with option "Build from Dockerfile" following the guide from here CloudBees Docker Custom Build Environment Plugin

I have put Dockerfile under the workspace root (/var/lib/jenkins/jobs/lumi/workspace). Then when a build is triggerred, I got error below. I think it was able to find the Dockerfile, but it couldn't build the image for some reason.

Build Docker image from ./Dockerfile ... $ docker build --tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 --file Dockerfile /var/lib/jenkins/jobs/lumi/workspace The Dockerfile (Dockerfile) must be within the build context (/var/lib/jenkins/jobs/lumi/workspace) FATAL: Failed to build docker image from project Dockerfile java.lang.RuntimeException: Failed to build docker image from project Dockerfile     at com.cloudbees.jenkins.plugins.docker_build_env.Docker.buildImage(Docker.java:116)     at com.cloudbees.jenkins.plugins.docker_build_env.DockerfileImageSelector.prepareDockerImage(DockerfileImageSelector.java:47)     at com.cloudbees.jenkins.plugins.docker_build_env.DockerBuildWrapper.setUp(DockerBuildWrapper.java:126)     at hudson.model.Build$BuildExecution.doRun(Build.java:156)     at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:537)     at hudson.model.Run.execute(Run.java:1741)     at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)     at hudson.model.ResourceController.execute(ResourceController.java:98)     at hudson.model.Executor.run(Executor.java:381) Finished: FAILURE 

The following is the Dockerfile content:

FROM php:5.6.11-apache 

Thanks in advance.

</div
           

回答リスト

0
 
vote
vote
ベストアンサー
 

現在DockerFileを使用してディレクトリにいる場合は、次の作業が必要です。

<事前> <コード> $ docker build --tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 --file Dockerfile .

これは次のとおりです。

<事前> <コード> $ docker build --tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 .

どちらの場合も、 . はビルドコンテキストを指定します - Dockerデーモンに送信されるディレクトリとファイルのセット。 .6 を使用すると、それを現在のディレクトリに設定します。 DockerFileが現在のディレクトリにあるため、デーモンに送信されます。

あなたの例の問題は、 /var/lib/jenkins/jobs/lumi/workspace/Dockerfile でDockerFileを探していることです。おそらく、DockerFileはそこにありませんが、現在のディレクトリにはありません。 Directory /var/lib/jenkins/jobs/lumi/workspace のファイルだけがDockerデーモンに送信されたので、DockerFileを構築するためのDockerFileがありません。

これが少し奇妙に聞こえることを実感します。それがより理にかなっているまで、このような問題を回避するためにDockerFileを使ってディレクトリからビルドを実行するだけで最も簡単です。

(また、すべてのデータがデーモンに送信されるように、あなたのホームディレクトリまたはダウンロードフォルダにあなたのDockerFileを置かないでください)。

 

If you're currently in the directory with the Dockerfile, the following should work:

$ docker build --tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 --file Dockerfile . 

Which is equivalent to:

$ docker build --tag b916af9f0b3e48425cb54c323d1a3adb749a72a1 . 

In both cases the . specifies the build context - the set of directories and files that get sent to the Docker daemon. Using . simply sets it to the current directory. As the Dockerfile is in the current directory, it will be sent to the daemon.

The problem in your example is that it is looking for the Dockerfile at /var/lib/jenkins/jobs/lumi/workspace/Dockerfile. Presumably, the Dockerfile isn't there, but in your current directory. As only the files in the directory /var/lib/jenkins/jobs/lumi/workspace were sent to the Docker daemon, it doesn't have your Dockerfile to build with.

I realise this sounds a bit strange. Until it makes more sense, it's easiest just to run your builds from the directory with the Dockerfile to avoid problems like this.

(Also, don't put your Dockerfile in your home directory or your Downloads folder as it will result in a long wait as all the data is sent to the daemon).

</div
 
 
4
 
vote

ついに答えを得たと思います!

私は今あなたが今すぐのことと同じ問題を抱えていました、そしてそれは実際にはとても愚かです。

プロジェクト構成ページの「Dockerコンテナ内のビルド」チェックを受けるとします。また、DockerFileがリポジトリ内にあることを確認したパスを指定しました。

これは点です。このパス内にDockerFileがある場合は、[DockerFile]の横にある書き込みスペースを空白のままにする必要があります。このスペースは、指定されたパス内にはないDockerFileを使用して構成されています。これがなければ、JenkinsはあなたのDockerFileがあなたの指定されたスペースの中にあると仮定します、そしてそれは他の場所を考慮して気にしません。

スタックオーバーフローに新しいので、まだスクリーンショットを投稿できません。しかし、私ができるとき、私はあなたがそれを持っていることを確認しますので私は私のポイントをより簡単にすることができます。

私はこれが助けになることを心から願っています。私は出力に同じタイプのエラーメッセージを持っていました、そして今私はトラブルなしで私のドッカーイメージを構築することができます。

 

I guess finally got the answer !

I just had the very same problem as you do right now, and it is actually very silly.

I assume you have ticked "build inside a Docker container" in the project configuration page. You must also have specified a path in which you made sure that a Dockerfile was inside the repository.

This is the point. If there is a Dockerfile inside this path, the writing space next to "Dockerfile" must be left blank. I guess this space consists in using a Dockerfile which is not inside the specified path. Without this, Jenkins will assume your Dockerfile is inside your specified space, and it will not bother considering any other location.

Since I am new to StackOverflow, I cannot post any screenshot yet. But when I can, I will make sure you have it so I can make my point more easily.

I sincerely hope this will help. I had the same type of error message at the output, and now I can build my Docker images without any trouble.

</div
 
 
0
 
vote

Jenkinsスレーブマシンでこの設定を実行していると仮定してください。

イメージの説明を入力します。ここで

$ {workspace}はDockerコンテキストを設定します。これはあなたのパスの問題を解決するべきです。

 

Assuming that you are running this setup on Jenkins slave machine.

enter image description here

${WORKSPACE} will set the docker context. This should solve your path issues.

</div
 
 

関連する質問

0  コマンド "docker-compose up" "コマンドが見つかりません:マウントポイントが指定されていません"エラー "  ( Command docker compose up results in command not found no mount point speci ) 
オンラインで見つけたExpressVPNコンテナを変更しようとしています。リポジトリを複製して、自分の変更されたイメージを作成しました。既存のコードを変更せずに新しいイメージを作成しようとしています。 私のすべてのDISHUBページに指定されたディレクトリにD...

0  バラードを持つドッカーイメージ  ( Docker image taking long to build ) 
ここではDockerFileの内容で、アルパイン画像からスリムバスターイメージに変更されました。私は本当に奮闘していますか私はその理由をとても長くするのを見て私はAPT-GETアップデートでのすべてのAPSの更新とインストールを行うことができると思います。私は...

-2  Ubuntu DockerコンテナにDockerFileを介してMySQLをインストールする方法はありますか? [閉まっている]  ( Is there a way to install mysql via dockerfile in an ubuntu docker container ) 
閉鎖。この質問はもっと焦点を絞ったにする必要があります。現在答えを受け付けていません。 この質問を改善したいですか? ...

0  Docker - Dockerの再利用 - さまざまなプロジェクトの構成設定  ( Docker reuse docker compose configurations for different projects ) 
nginx, apache2, varnish, redis のDockerFilesを搭載したLarge Dockerプロジェクトを搭載し、数週間の変更やテストの後にうまく機能します。 私は今やDocker-ComposeとOverride.ymlファイ...

8  コピーに失敗しました:stat / var / lib / docker / tmp / docker-xxx:そのようなファイルまたはディレクトリなし  ( Copy failed stat var lib docker tmp docker xxx no such file or directory ) 
私はDockerイメージを構築するためのgithubアクションワークフローを持っています: <事前> <コード> name: Backend-Demo Docker Image CI on: push: branches: [ master ] j...

0  Docker、DockerFileからMySQLをインポートすると、MySQLコマンドが見つかりませんでした  ( Docker importing mysql through dockerfile results in mysql command not found ) 
カスタムドッカー画像をいくつか持っていますi.e <事前> <コード> cloudbluedigital/mysql:v-0.1 cloudbluedigital/redis:v-0.1 私は現在ラベルイメージを構築するためにそれらの画像を使っているので...

7  Docker /etc/resolv.confで定義されたネームサーバーでコンテナを起動する方法  ( Docker how to start container with defined nameservers in etc resolv conf ) 
これは私のdockerfile です <事前> <コード> FROM javamachine_0.1.2 MAINTAINER Meiram RUN /report/report.sh start ENV LANG C.UTF-8 ENV LANGUAGE C...

2  いいえインストールグループファイル - CentOS 7 - グループインストール  ( No install group file centos 7 group install ) 
12.345%7 が機能するを実行しようとするときは、Dockerコンテナ内のCentOSイメージを使用しています。 <事前> <コード> 12.345%8 インストールされているグループファイルはありません。たぶん走る:yum groups ma...

0  コンテナを起動できません:OCIランタイムCREATEに失敗しました:container_linux.go:349  ( Cannot start container oci runtime create failed container linux go349 ) 
私は16 GBのRAMを持つ<コード> CentOS Linux release 7.8.2003 (Core) にDockerを使用しています。 My Dockerバージョンは Docker version 19.03.7 です。 Docker-Compos...

1  DockeFileはポートで実行されていません  ( Dockefile not running on port ) 
このPythonファイルを持っています: <事前> <コード> mov r8d, ecx3 とこのドッケルファイル: <事前> <コード> mov r8d, ecx4 mov r8d, ecx5 を実行しているときは、イメージが作成されますが、<コード...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有