我想使用Jenkins中的Dockerfile为maven项目创建一个映像。这是一个 Spring 启动项目。我已经将Jenkins作为Docker容器运行。我正在使用windows 10。
我的停靠文件是:
FROM maven:3.5-jdk-8-alpine
WORKDIR /app
COPY pom.xml /app/
COPY Dockerfile /app/
RUN ["mvn", "package"]
FROM tomcat:9
EXPOSE 8087
COPY /app/target/*.war /usr/local/tomcat/webapps/
CMD ["catalina.sh","run"]
pom.xml的插件部分是:
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.example.restcurd.RestcurdApplication</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.10</version>
<executions>
<execution>
<id>build</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<repository>pomkiticat/${project.name}</repository>
<tag>${project.version}</tag>
<skipDockerInfo>true</skipDockerInfo>
<pullNewerImage>false</pullNewerImage>
</configuration>
</plugin>
</plugins>
在Jenkins·多克的设定中是:
我还选择了选项Expose daemon on tcp://localhost:2375 without TLS
在docker桌面。
但我得到的错误
[0m[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16:05 min
[INFO] Finished at: 2020-07-29T06:58:10Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.spotify:dockerfile-maven-plugin:1.4.10:build (default) on project restcurd: Could not build image: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: java.io.IOException: No such file or directory -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
我找到了这个问题的解决方案。我得到了一些解决方案,即设置Docker主机URI。我已经设置了它,并附上了上面的图像。
我该如何解决这个问题呢?先谢谢了。
2条答案
按热度按时间xienkqul1#
当一个进程试图写入Docker守护进程套接字,但它缺少权限时,就会发生这种情况。
检查
/var/run/docker.sock
对于试图创建docker映像的用户是否可以访问。特别是,默认情况下,只有root用户和组具有写入docker.socket的权限,因此尝试执行chmod o+w /var/run/docker.sock
以允许其他用户写入docker守护进程socket,然后问题应该就解决了。fruv7luv2#
这对我在Fedora上很有效-以root身份运行