web-dev-qa-db-ja.com

docker-mavenプラグインがイメージをビルドしようとするとどうなりますか?

DockerコンテナでJenkinsを実行していますが、JenkinsはMavenビルドを実行しようとしています。ビルドの一部として、dockermavenプラグインはdockerイメージをビルドするように指示します。

POMのその部分は以下のとおりです。

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.3.8</version>
    <configuration>
        <imageName>example</imageName>
        <baseImage>Java:latest</baseImage>
        <skipDockerBuild>false</skipDockerBuild>
        <cmd>["Java", "-jar", "myLogThread-jar-with-dependencies.jar"]</cmd>
        <resources>
            <resource>
                <directory>target/</directory>
                <include>config.properties</include>
            </resource>
            <resource>
                <directory>${project.build.directory}</directory>
                <include>myLogThread-jar-with-dependencies.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

Mavenビルドは、イメージのビルドを試みるまで実行されます。ビルドが試行されると、次のエラーメッセージが表示されます。

[INFO] Building image example
[INFO] I/O exception (Java.io.IOException) caught when processing request to {}->unix://localhost:80: Permission denied

正しいディレクトリに移動でき、Dockerfileがそこにあります。

Sudo docker build .を実行することもでき、問題なくイメージがビルドされます。

Mavenビルドが失敗するのはなぜですか? localhost:80に対してどのような要求が行われていますか? Mavenがイメージを構築できるように、これを修正するにはどうすればよいですか?

注:このコンテナーにdockerソケットとバイナリをマウントしました

17
kevin

Rajith Delanthaが前述したように、これで問題は解決しました。

追加:DOCKER_OPTS=' -G jenkins'/etc/default/dockerに直接追加します。

次に、Sudo service docker restartでDockerサービスを再起動します。

3
Aaron Zhao

これは、JenkinsにDOCKER_Host環境変数を追加することで解決できます。

Dockerデーモンを次のようにセットアップします。

[/etc/sysconfig/docker]
OPTIONS="-H tcp://127.0.0.1:4243"

Jenkins Jobs(環境変数を挿入):

DOCKER_Host=tcp://127.0.0.1:4243
2
Aditya Sirna

同じ問題が発生しましたが、ローカルマシンで発生しました。

Githubスレッドでこのコメントを読んだ後、私はそれを手に入れました: https://github.com/docker/compose/issues/1214#issuecomment-256774629

それは言う:

解決策( https://docs.docker.com/engine/installation/linux/debian/ から、Debianでのみ機能するわけではありません):

Dockerグループがまだ存在しない場合は、追加します。

Sudo groupadd docker

接続されたユーザー「$ {USER}」をdockerグループに追加します。優先ユーザーに一致するようにユーザー名を変更します。これを有効にするには、ログアウトしてから再度ログインする必要がある場合があります。

Sudo gpasswd -a ${USER} docker

Dockerデーモンを再起動します。

Sudo service docker restart

1
leocborges

Jenkinsでも同じ問題が発生しました。

Dockerグループにjenkinsを追加しました

Sudo usermod -aG docker jenkins

次に、ジェンキンスを再構築します。

0

Dockerデーモンを実行していないときに同様の問題が発生しました-Dockerツールボックスを再起動すると、今でははるかに幸せに見えます

0
James B

docker psmvnを実行しているのと同じユーザーから機能することを確認した後も、同じ問題が発生しました。画像名に特殊文字が含まれているため、バグのように見えます。 Dockerイメージ名からダッシュ記号(-)(または特殊文字)を削除することで解決しました。

リポジトリを別の名前に設定して確認してみてください。

            <configuration>
                <repository>somename</repository>                    
            </configuration>
0
Maoz Zadok

私はbamboo-agentで問題に遭遇しましたが、ジェンキンスについても同じことが当てはまると思います。

Mavenを実行しているユーザーをdockerグループに追加します。次に、DockerとMavenを実行しているサービスを再起動します。サービスの実行中は、グループの変更は読み込まれません。だから私の場合:

Sudo groupadd docker # if it does not exist
Sudo usermod -a -G docker bamboo-user
Sudo systemctl restart docker.service
Sudo systemctl restart bamboo-agent.service
0
tormodatt

私は両方の賛成の答えの要素を組み合わせることによって問題を解決することができました。

/etc/default/dockerで別のポートを使用するようにオプションを設定します。

DOCKER_OPTS="-H tcp://127.0.0.1:4243"

Dockerデーモンを再起動します。

Sudo service docker restart

次に、パッケージをビルドします。

export DOCKER_Host=tcp://127.0.0.1:4243
mvn clean package docker:build
0
Jose Martinez