docker使用maven构建远程镜像

本文介绍了如何在Linux环境下,通过编辑docker服务启动文件启用2375端口,然后利用dockerfile-maven-plugin插件进行远程构建Docker镜像。在maven项目的配置和Dockerfile的指导下,将war包部署到tomcat容器,并解决了在Eclipse中因不读取环境变量导致的构建问题。

1.应用环境

  • 默认docker服务启动 文件(/usr/lib/systemd/system/docker.service) vi 编辑文件

  • 在ExecStart后面 添加一行(表示启动2375端口 用于监听远程操作)

-H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock \
[root@localhost docker]# vi /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target
Wants=docker-storage-setup.service
Requires=docker-cleanup.timer

[Service]
Type=notify
NotifyAccess=main
EnvironmentFile=-/run/containers/registries.conf
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
Environment=GOTRACEBACK=crash
Environment=DOCKER_HTTP_HOST_COMPAT=1
Environment=PATH=/usr/libexec/docker:/usr/bin:/usr/sbin
ExecStart=/usr/bin/dockerd-current \
          --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current \
          --default-runtime=docker-runc \
          --exec-opt native.cgroupdriver=systemd \
          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \
          --init-path=/usr/libexec/docker/docker-init-current \
          --seccomp-profile=/etc/docker/seccomp.json \
          -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock \     //插入远程端口
          $OPTIONS \
          $DOCKER_STORAGE_OPTIONS \
          $DOCKER_NETWORK_OPTIONS \
          $ADD_REGISTRY \
          $BLOCK_REGISTRY \
          $INSECURE_REGISTRY \
          $REGISTRIES
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=1048576
LimitNPROC=1048576
LimitCORE=infinity
TimeoutStartSec=0
Restart=on-abnormal
KillMode=process

[Install]
WantedBy=multi-user.target
~
"/usr/lib/systemd/system/docker.service" 41L, 1309C
  • 重新加载
[root@localhost docker]# systemctl daemon-reload 

2.使用dockerfile-maven-plugin插件远程构建docker

  • 环境变量设置
    在这里插入图片描述

  • maven项目pom.xml配置

<build>
	<finalName>NginxExLinux</finalName>     //maven指定package包名
        <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.0</version>
                <configuration>
                    <repository>NginxExLinux</repository>
                    <tag>1</tag>
                    <buildArgs>
                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
</build>
  • Dockerfile 文件配置(项目目录下)
    将maven项目打包的target目录下的 NginxExLinux.war 拷贝到tomcat容器下的 /usr/local/tomcat/webapps 目录
FROM tomcat
COPY target/NginxExLinux.war /usr/local/tomcat/webapps
  • 执行生成镜像
mvn clean package dockerfile:build -DskipTests
  • 报下列错误时,需将Dockerfile文件放置在maven项目根目录下
[ERROR] Missing Dockerfile in context directory: E:\eclipse-workspace-server\NginxExLinux
  • 错误//Could not build image不能创建镜像,原因是eclipse中的cmd 不读取环境变量
Caused by: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: com.
spotify.docker.client.shaded.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

//解决方法 可通过Windows的cmd 实现 执行生成镜像

在这里插入图片描述

Docker build Maven构建失败时,可能有几个原因。首先,确保您已正确配置和安装了Docker以及Maven插件。确保您使用的是正确版本的docker-maven-plugin并且已正确配置。您可以检查插件的文档或示例配置文件来确保您的配置正确。 其次,检查您的项目是否有任何依赖项或配置问题。确保项目的pom.xml文件中包含正确的依赖项和插件配置。如果有任何错误或缺少配置,可能会导致构建失败。 此外,检查您的网络连接是否正常。如果您的构建过程需要从远程仓库下载依赖项或镜像,网络连接问题可能会导致构建失败。确保您的网络连接稳定,并且可以访问所需的依赖项和镜像。 最后,查看构建过程的日志和错误信息,以了解具体的错误原因。根据错误信息,您可以采取相应的措施来解决问题。可能需要检查构建环境,升级插件版本,修复配置问题或解决依赖项问题。 总结来说,当Docker build Maven构建失败时,您应该检查DockerMaven插件的配置,确保项目的依赖项和插件配置正确,检查网络连接是否正常,并查看构建日志和错误信息以了解具体的错误原因。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [dockerbuild-maven-plugin:使用 docker 容器构建 java 项目的 Maven 插件](https://download.youkuaiyun.com/download/weixin_42166623/20419254)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [docker-maven-plugin](https://download.youkuaiyun.com/download/weixin_42106357/19950707)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [springboot-multi-module-v2:docker部署maven构建多模块springboot项目](https://download.youkuaiyun.com/download/weixin_42157567/15601621)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值