问题标签 [docker-maven-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - 在 Jenkins docker 容器中使用 fabric8 docker-maven-plugin
我正在使用 fabric8 的 docker -maven-plugin来构建和推送我的 docker 镜像。我做类似的事情:
在我的开发环境和 Jenkins 中。但这是我的问题。
我让 Jenkins 在 docker Swarm 中运行。
请注意,我有一个从主机/var/run/docker.sock
到容器的绑定挂载/var/run/docker.sock
。
然后我通过运行在容器中安装 Docker 二进制文件:
最后我将jenkins
用户添加到docker
组中
实际上,我将jenkins/jenkins
使用上述命令将图像作为我的根来构建我自己的 docker 图像。
然后我登录到 Jenkins,按如下方式创建我的管道
当我运行管道时,出现以下错误:
注意 Jenkins 运行的命令
它使用我在Jenkins管道中使用的maven工具'm3'并运行maven命令mvn clean install docker:build
并抱怨权限
这是踢球者。我进入詹金斯容器
请注意,我不是以 root 用户身份进入的,我实际上是jenkins
用户。然后我进入 pom.xml 文件所在的项目并运行
它有效!!!!图像已构建。为什么当我在容器内时它可以工作,而不是当我从 jenkins ui 运行它时。jenkins UI 是否使用不同的用户?
maven - 使用fabric8 docker-maven-plugin 在远程docker daemon 上构建镜像
我正在尝试使用fabric8docker-maven-plugin
在我的gitlab ci 管道中构建docker 图像。
背景:
我的图像构建阶段gitlab-ci.yml
如下所示:
我的 pom 有
我的 Dockerfile 包含
但是构建失败并出现错误
问题:
问题似乎是,在从 构建的容器中,maven$JAVA_IMAGE
正在使用docker:dind
容器的 docker 守护进程 (at tcp://docker-build:2375
) 来构建my-image
(如预期的那样),但docker:dind
容器无权访问$JAVA_IMAGE
容器上的文件./some/directory/
。有没有办法让它访问这些文件,或者将这些文件复制到docker:dind
容器中?还是有更好的方法来做我想做的事情(同时保持服务映像docker:dind
和构建映像之间的分离$JAVA_IMAGE
)?
docker - 容器初始化导致 \"rootfs_linux.go:58: 挂载到 rootfs 导致不是目录
我在 Windows 7 上的 docker 配置有问题。我正在使用 docker 工具箱。
以前我的配置运行良好,但现在它会导致错误。
DOCKER> I/O Error [Unable to start container id [7b5a4bd7ccfd] : OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \"rootfs_linux.go:58: mounting \\\"/c/Users/myProject/zip/src/elastic/elasticsearch.yml\\\" to rootfs \\\"/mnt/sda1/var/lib/docker/overlay2/f2f7c25fc05de0ec45cef945b0917beefe26bd1d0a31546378c2ffabfb905ccb/merged\\\" at \\\"/mnt/sda1/var/lib/docker/overlay2/f2f7c25fc05de0ec45cef945b0917beefe26bd1d0a31546378c2ffabfb905ccb/merged/usr/share/elasticsearch/config/elasticsearch.yml\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type (Bad Request: 400)]
我调查了问题,发现 docker mount elasticsearch.yml 文件作为文件夹,但在主机中它作为文件存在。有谁知道怎么可能?
我希望 docker 将该文件作为文件找到。
非常感谢
java - 在 maven-docker-plugin '~/.m2' 中无法相对化,无法解析任意用户主路径
我有一个由其他人编写的父 pom,它用于在本地构建和运行 docker 映像。当我尝试使用父 pom.xml 进行构建时,出现以下错误,'~/.m2' cannot be relativized, cannot resolve arbitrary user home paths.
我认为错误在于将卷绑定到图像。这就是它在父 pom.xml 中的定义方式
上面的项目在 mac os 上运行良好,我使用的是 windows 机器。我安装docker for windows
并阅读了fabric8 文档,了解如何将卷绑定到您的图像,但找不到与我的问题相关的任何示例。
maven - 使用 fabric8 docker-maven-plugin 将 MANIFEST.MF 添加到 docker 映像
我已经使用自定义 Dockerfile 为 Servlet WebApp 成功创建了一个带有 fabric8 插件的 docker 映像。
该图像基于tomcat,因此我需要将应用程序放入tomcat/webapps
以优化图像,我不是直接插入战争,而是在两个单独的层中插入它的扩展内容:一层用于WEB-INF\lib
所有其他层。
这样,如果我创建一个新版本但库与旧版本相同,远程服务器只需要拉应用层
我正在从 maven-war-plugin 生成的文件夹“target/MyProject”中复制战争的内容,然后从它创建“MyProject.war”但是这个文件夹不包含META-INF\MANIFEST.MF
文件(它是直接在战争?)
有没有办法在某个文件夹中创建清单文件,以便我可以将其复制到 docker 映像中?
这里是 pom.xml 的一部分
maven - 使用 Google Cloud Build 时如何将私有存储库凭据传递给 maven docker 映像
我正在尝试使用 Google Cloud Build 来构建我的 Java 应用程序。它允许使用所谓的云构建器——不同构建器的 docker 镜像。我正在使用 Maven。所以问题是我必须使用私有存储库(工件)来部署工件。此代表受密码保护,我不知道如何将这些凭据传递给 GC maven docker 容器。
我看到唯一可能的方法是:
运行将更新 maven 容器 settings.xml 的 shell 脚本,如下所示:
/li>在 cloudbuild.yml 中设置环境变量
还有其他优雅的方式来实现我想要的吗?
java - HttpHostConnectException:连接到 localhost:2375 [localhost/127.0.0.1] 失败:连接被拒绝
[错误] 无法在项目 Bookstore 上执行目标 com.spotify:docker-maven-plugin:1.0.0:build(默认):捕获异常:java.util.concurrent.ExecutionException:com.spotify.docker.client.shaded。 javax.ws.rs.ProcessingException:org.apache.http.conn.HttpHostConnectException:连接到 localhost:2375 [localhost/127.0.0.1] 失败:连接被拒绝
为什么这个异常不断发生,我该如何解决它,我正在从 war 文件构建 docker 映像。
pom.xml
DockerFile
更新
现在关闭防火墙后出现此错误,该怎么办?
maven - 将占位符传递给从 docker-maven-plugin (io.fabric8) 构建的 docker 映像
我使用 io.fabric8:docker-maven-plugin 从 maven 构建 docker 映像。
我希望容器像这样运行:
java -jar -Dspring.profiles.active=prod /maven/myapp-1.4.3.jar
java -jar -Dspring.profiles.active=dev /maven/myapp-1.4.3.jar
所以我实际上希望图像通过 -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE 并且该变量将在启动容器时通过 docker run 传递:
docker run --env SPRING_PROFILES_ACTIVE=prod
但是,看起来容器运行以下命令:
java -jar -Dspring.profiles.active=$SPRING_PROFILES_ACTIVE /maven/myapp-1.4.3.jar
并且 $SPRING_PROFILES_ACTIVE 不会被环境变量替换。
pom.xml:
docker - 在 docker 多阶段映像中跨阶段传递环境变量
我有一个具有 4 个较低层的 docker 映像。
我想使用多阶段减小当前映像层的大小,但这会导致跨阶段丢失环境、端口和 cmd 配置属性。有没有办法在Dockerfile
.