Tag: maven

在Docker中构buildMaven项目时,所有目标文件都是根源的

我有一个Maven项目,我想在Docker容器中构build,这样我就不必在我的Jenkins系统上安装Java,Maven …。 我构build的Maven项目如下: docker run -it –rm -v /var/run/docker.sock:/var/run/docker.sock:ro -v $(pwd):/opt/maven -w /opt/maven maven mvn clean install 这工作很好,构build是正确的。 但是,以普通用户身份执行此操作时, target/目录中的所有文件都由root拥有,而不是由jester (目前用户)拥有。 有一个简单的方法来解决这个问题吗?

IntelliJ:使用docker jvm或者docker maven?

我有一个docker / jvm实例,我使用命令行来编译和运行java代码。 IntelliJ的项目configuration要求我指向文件系统上的jvm。 所以,我想知道,我可以configurationintellij使用这个docker集装箱? 我想我可以configurationdocker容器,保持运行,并挂载/共享其文件系统,但我不想 – 我想用我的短暂容器实例。 我有同样的想法使用maven – 我可以使用maven docker实例,而无需安装文件系统,从intellij内? 同样,intellij似乎需要一个指向maven的文件系统位置的指针,所以这似乎有问题。 有没有人有任何线索,如果这是可能的,或如何去configuration这样的事情?

maven-release-plugin在提交之前自动运行一个脚本

我想知道是否有可能使maven-release-plugin在提交新标签之前运行特定的脚本。 原因是,我有一个Dockerfile,我想用我的项目的新版本更新。

运行Docker-client Java API时,Apache Connection被拒绝

我正在尝试安装Docker客户端远程API库( https://github.com/spotify/docker-client )来执行一些图像search并检查图像数据(全部在公共存储库中)。 我有boot2docker虚拟机下载,安装并运行。 诸如“Docker pull ubuntu”之类的命令工作正常,但是现在我想通过Java程序来完成这个任务。 我使用Eclipse IDE Egit插件来导入github项目,并从现有的Master分支创build一个Maven / Java项目。 源代码完全导入,没有错误报告。 然后我试着写一个简单的testing: final DockerClient docker = DefaultDockerClient.fromEnv().build(); //docker.pull("busybox"); List<ImageSearchResult> results = docker.searchImages("ubuntu"); for (ImageSearchResult res : results) { System.out.println(res.getName()); } 但是,在Eclipse中运行代码时,出现以下错误: Exception in thread "main" com.spotify.docker.client.DockerException: java.util.concurrent.ExecutionException: javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:1109) at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:1028) at […]

将docker作为非root用户运行,或者以root用户的身份在tomcat上运行jenkins

我正在尝试使用docker-maven插件构builddocker镜像,并计划使用jenkins执行mvn命令。 我将jenkins.war部署在tomcat实例上,而不是作为非root用户运行的独立应用程序。 问题是docker需要以root用户身份运行,因此maven命令需要以root用户身份运行,因此jenkins / tomcat需要以root用户身份运行,这不是一个好习惯(虽然我的非root用户是也sudoer,所以我猜不会有太大的关系)。 所以底线,我看到了两个解决scheme:要么作为非root用户运行docker(并需要帮助如何做到这一点)或需要运行jenkins作为根(不知道如何实现,因为我改变了环境variables/configuration和仍然不切换到根)。 有哪些解决scheme可供select以及如何实施?

通过fabric8io docker-maven-plugin将一个.war部署到一个Docker镜像中

我对Docker和fabric8io docker docker-maven-plugin很新。 我有一些困难的时候将一个.war插入到我的jboss/wildfly派生的图像中。 我可以通过命令行成功构build与.war一起提供的映像,但是我不能通过已经提到的插件来完成。 据我所知,一旦你给正确的上下文和Dockerfile它应该只是一个问题: <build> <finalName>${project.build.finalName}.${project.packaging}</finalName> … <assembly> <descriptorRef>artifact</descriptorRef> </assembly> </build> 但我得到这个错误: [INFO] <<< docker-maven-plugin:0.19.0:build (default-cli) < package @ YoOffer <<< [INFO] [INFO] — docker-maven-plugin:0.19.0:build (default-cli) @ YoOffer — [WARNING] Cannot include project artifact: edu.pezzati.yo:YoOffer:war:0.0.1-SNAPSHOT; it doesn't have an associated file or directory. [WARNING] The following patterns were never triggered in this artifact […]

无法使用(spotify)Docker maven插件推送到远程repo

我有一个Spring Boot项目,我想从Docker的私有registry中build立一个映像。 我遵循Spring Boot官方文档 ,使用Spotify Docker Maven插件 。 使用Boot2Docker将我的映像发布到Docker本地实例时运行良好。 现在我正在试图做一个远程的私人回购(一个不安全的回购),我正在努力。 我已经按照这个插件的文档,这就是我的configuration如下所示: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.9</version> <configuration> <imageName>service-discovery</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.war</include> </resource> </resources> </configuration> <executions> <execution> <id>build-image</id> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> <execution> <id>tag-image</id> <phase>package</phase> <goals> <goal>tag</goal> </goals> <configuration> <image>service-discovery</image> <newName>develop01.mycompany.com:5000/service-discovery</newName> </configuration> </execution> </executions> </plugin> </plugins> </build> […]

如何解决不可解决的importPOM?

这是我通过从GitHub拉取一个maven项目来做Jenkins构build时所面临的错误。 [ERROR] Non-resolvable import POM: Could not transfer artifact com.sap.cloud.s4hana:sdk-bom:pom:1.4.0-SNAPSHOT from/to nexus-central (http://<nexus server>/nexus/content/groups/build.snapshots/): <nexus server> @ line 16, column 25 我目前正在开发适用于Linux VMware workstation 14播放器,并使用Docker的Jenkins图像来运行此版本。 下面是错误图片

获取所有的Maven依赖包括插件依赖

我试图让maven下载所有的依赖项(编译,testing,插件等),这样我可以避免我们的dockerized构build浪费不必要的时间一遍又一遍地下载它们。 我们已经对我们的maven build进行了docker化,以便我们可以从jenkins运行它,而不需要在jenkins机器上安装许多特定于构build的依赖项(Java,redis,maven dependencies等)。 我们的构build依赖于增量docker构build,只执行实际需要重新运行的步骤。 我们的主要构build是一个DockerFile,它有几个步骤来安装jdk,maven等。然后它做了一个 COPY ./pom.xml /opt/inbot-api/pom.xml RUN mvn dependency:copy-dependencies clean 这将下载依赖关系到本地maven仓库,然后清理出目标目录。 然后我们复制源树到图像并运行完整版本。 COPY ./src /opt/inbot-api/src RUN mvn -e clean install 一般的想法是,在一台干净的机器上,docker将执行所有的RUN步骤,但是在增量构build中它只会重新运行需要重新运行的东西。 在每个运行步骤之后,它存储中间图像。 所以,如果pom文件没有改变,那么不需要重新运行依赖性提取步骤,因为它会产生完全相同的结果。 所以,而是加载已经下载的所有依赖关系的caching中间映像。 这正是我们想要的。 我们的DockerFile还有很多不同的地方,但最终它生成了一个docker文件,其中包含我们编译的工件,一个nginxconfiguration以及我们可以部署到ECS的所有运行时依赖项。 这几乎工程,除了mvn clean install仍然下载额外的插件依赖关系的每个构build。 所以,这些是依赖关系,副本依赖关系步骤不包括。 我的问题,我怎么得到RUN mvn dependency:copy-dependencies clean下载所有依赖项,包括插件依赖项。 我已经看到人们实际上做了一个mvn verify clean而不是mvn dependency:copy-dependencies clean但是在我们的情况是这样慢。 我想知道是否有更好的方法来做到这一点。 我会很感激任何反馈,如何改善这一点。 更新 我现在做一个 RUN mvn -B -T 4 dependency:copy-dependencies dependency:resolve-plugins dependency:go-offline clean […]

无法在app.jar中运行Docker镜像 – 没有主清单属性

无法运行构build的Docker镜像。 当我运行命令 docker run -p 8080:8080 -t {image prefix name}/{image name} 我收到消息"no main manifest attribute, in app.jar" 使用docker-maven-plugin,并尝试显式调用main类的maven-assembly-plugin。 docker version Boot2Docker 1.7.0