docker使用maven插件打包springBoot项目至服务器

使用服务器docker环境,本地则不在需要任何docker环境
docker安装
docker开启远程访问
docker阿里私有仓库,拉取,推送操作
idea中使用docker插件打包,发布,推送springboot应用
首先安装docker,并开启docker远程服务,idea安装docker插件,参考上面的博客
创建一个简单的springboot项目,在根目录中添加Dockerfile文件
在这里插入图片描述
dockerfile

# 基础镜像 必填 格式 <image> 或者<image>:<tag>
FROM openjdk:8-jdk-alpine
# 镜像作者 非必填
MAINTAINER "huangchao"
# 指定镜像标签 非必填
LABEL version="1.0"
LABEL description="这只是一个测试demo"
EXPOSE 8080
VOLUME /tmp
# 如果是部署应用,添加文件到容器中 相当于把本地/tarter/的jar包 复制到 容器中的根目录并指定名称为app.jar
ADD /target/docker-demo-0.0.1-SNAPSHOT.jar app.jar
# 容器启动时运行得启动命令
ENTRYPOINT ["java","-jar","/app.jar"]

pom.xml中引入com.spotify插件

<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>1.2.0</version>
                <!--将插件绑定在某个phase执行-->
                <executions>
                    <execution>
                        <id>build-image</id>
                        <!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--指定docker文件目录-->
                    <dockerDirectory>${project.basedir}</dockerDirectory>
                    <!--指定生成的镜像名-->
                    <imageName>hc/${project.artifactId}</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!--指定远程 docker api地址-->
                    <dockerHost>http://192.168.74.101:2375</dockerHost>
                    <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--jar 包所在的路径  此处配置的 即对应 target 目录-->
                            <directory>${project.build.directory}</directory>
                            <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

在这里插入图片描述
因为这里做了一个命令挂载
所以直接执行mvn clean package就行了,相当于执行 mvn clean package dockerfile:build
在项目跟目录执行:
在这里插入图片描述
结果如下:
在这里插入图片描述
这里还可以挂载其他命令,比如打包镜像完成后可以将镜像推送到私有仓库,这里我没有配置,就不演示了

在这里插入图片描述
打包完成后 看远程服务器里的docker是否有镜像
在这里插入图片描述
在这里插入图片描述
启动容器:

docker run --name docker-demo -p 8080:8080 -d hc/docker-demo

在这里插入图片描述
这里有一个问题就是直接执行mvn clean package只是打包了镜像
并没有以该镜像启动容器,这样操作还是有一点麻烦,如果项目多了,还要一个一个去启动
用docker插件打包就直接启动容器了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值