Spring boot项目 构建自己的docker镜像(maven插件方式,宿主机dockerfile构建方式,idea插件方式)Centos7

119 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。 

Spring boot 和 docker逐渐成为日常,这篇文章来说说怎么吧我们自己的spring-boot项目构建成docker image 直接运行到宿主机上。这里提供两种方法。

1,通过maven插件的方式(docker-maven-plugin)

1,先上插件源码地址

作者有两个项目能帮助我们完成这个需求(详细请查看官方文档)

(1)GitHub - spotify/docker-maven-plugin: INACTIVE: A maven plugin for Docker

(2)GitHub - spotify/dockerfile-maven: MATURE: A set of Maven tools for dealing with Dockerfiles

这里演示第一个(可省略dockerfile)

2,引入依赖

<build>
        <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <configuration>
                    <imageName>${project.artifactId}:${project.version}</imageName>
                    <imageTags>${project.version}</imageTags>
                    <baseImage>java:8</baseImage>
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <dockerHost>http://192.168.1.30:2375</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot-maven-plugin.version}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                </configuration>
            </plugin>
        </plugins>
    </build>

注意,执行插件之前docker要开启远程连接

vi /lib/systemd/system/docker.service

​编辑

#修改以ExecStart开头的行:(因为我的系统是centos 7的,所以修改为下面得)

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

#如果是centos7以下的话,就把ExecStart修改为

ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

systemctl daemon-reload

service docker restart

#执行正常返回则成功
curl http://localhost:2375/info

3,执行命令

​编辑

成功后docker images查看已经存在。

2,直接在宿主机构建的方式。

1、将jar包上传linux服务器/usr/local/dockerapp目录,在jar包所在目录创建名为Dockerfile的文件

2、在Dockerfile中添加以下内容

###指定java8环境镜像

FROM java:8

###复制文件到容器app-springboot

ADD docker-springboot-0.0.1.jar /app-springboot.jar

###声明启动端口号

EXPOSE 8080

###配置容器启动后执行的命令

ENTRYPOINT ["java","-jar","/app-springboot.jar"]

使用docker build命令构建镜像

docker build -t springboot/springboot:v1 .
# 格式: docker build -t 镜像名称:标签 Dockerfile的相对位置

docker run -p 8080:8080 docker-springboot-0.0.1

3,通过IDEA插件的方式

1,安装插件

​编辑

2,设置连接地址,设置之前要开启远程链接,上面说到了

​编辑

3,编写dockerFile(上面已经写了)

4,启动配置

​编辑

​编辑

5,开始构建并启动,如果已经存在则重新构建启动

​编辑

6,控制台查看构建结果和日志

​编辑