docker部署springboot项目

目的

你可以使用该插件在你的maven项目中创建一个Docker镜像,比方说,build 过程可以为java服务输出一个可以运行该服务的Docker镜像。

步骤

dockerfile提供了两种配置方式,一种是通过Dockerfile文件,一种是直接在pom.xml配置。

你可以直接在pom.xml文件中指定base image,entry point, cmd, maintainer 和files,而不用通过Dockerfile的方式。

当然通过pom.xml文件的方式支持一些简单的命令,如果你需要VOLUMN命令(或者其他pom.xml不支持使用的命令),还是需要通过将命令写入Dockerfile,并通过在pom中配置dockerDirectory来引入该Dockerfile

默认情况下,该插件通过访问localhost:2375来连接本地docker,可以通过设置DOCKER_HOST 环境变量来连接docker.

DOCKER_HOST=tcp://<host>:2375

本篇只记录通过Dockerfile文件部署方式

为了使用Dockerfile,必须在pom的文件中通过dockerDirectory来指明Dockerfile文件的所在目录。如果配置了dockerDirectory,baseImage,maintainer,cmdentryPoint配置将忽略。下面的配置会将dockerDirectory的内容拷贝值${project.build.directory}/docker,使用resouces元素可以拷贝其他的文件,比如生成jar包文件。

<build>
        <plugins>
           
            <!--  ${docker.image.prefix} :
                ${project.artifactId} : 项目的名称 dockerDirectory : dockerfile的文件路径 -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <!--如果你想强制docker在每次新的构建上覆盖镜像tags,可配置foreceTags-->
                    <!--<forceTags>true</forceTags>
                    <imageTags>
                        <imageTag>${project.version}</imageTag>
                        <imageTag>latest</imageTag>
                    </imageTags>-->
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <!-- docker远程服务器地址 -->
                    <dockerHost>${docker.host}</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

        </plugins>
        <finalName>${project.artifactId}</finalName>
    </build>

使用

按照上面的配置之后,可以使用如下命令生成一个镜像

mvn clean package docker:build

将生成的镜像推送到镜像注册中心,通过pushImage标签

mvn clean package docker:build -DpushImage

启动镜像

docker run -d -p 9999:8888 -v  /usr/local/myproject/demo/logs:/logs/ XXX
-d 后台运行
-p 端口映射
/usr/local/myproject/demo/logs 指你的服务器的日志目录
/logs/ 指项目中的日志目录
XXX 指刚才的容器名

查看日志

//查看映射的日志
tail -f /usr/local/myproject/demo/logs/***.log

//直接查看docker容器的的启动日志
docker logs --tail=200 2915c40fdcd

备注:如果推送到镜像服务器失败,有可能是2375端口对外提供的问题,可以参考如下文章

https://blog.csdn.net/u012946310/article/details/82315302

参考文章:

https://www.jianshu.com/p/3b91b8958c3e

https://blog.csdn.net/forever_insist/article/details/88870558

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值