spring-boot使用maven构建docker镜像(单服务)

系列:
spring-boot使用maven构建docker镜像(单服务)
spring-boot使用maven构建docker镜像(单服务+MySQL)
spring-boot使用maven构建docker镜像(多服务)

文章目录

  • 单服务 构建docker镜像 + 运行
    • 前提:
    • 1. 编写服务的 Dockerfile
    • 2. pom.xml 引入 io.fabric8/docker-maven-plugin 插件
    • 3. maven 命令
    • 推送镜像到私有镜像仓库
  • 常见问题
    • 2375 端口不通问题排查

单服务 构建docker镜像 + 运行

使用Dockerfile构建镜像

前提:

  • 开启docker远程管理端口(此案例演示暂不考虑安全问题,直接开启2375端口)

1. 编写服务的 Dockerfile

Dockerfile官方文档:https://docs.docker.com/engine/reference/builder/
src/main/docker/Dockerfile

FROM openjdk:8-jdk-alpine
ADD *.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-Duser.timezone=GMT+08", "-jar", "/app.jar"]

2. pom.xml 引入 io.fabric8/docker-maven-plugin 插件

io.fabric8/docker-maven-plugin官方文档:http://dmp.fabric8.io/

<plugin>
    <groupId>io.fabric8groupId>
    <artifactId>docker-maven-pluginartifactId>
    <version>0.33.0version>
    <configuration>
        <verbose>trueverbose>
        
        <dockerHost>tcp://192.168.121.129:2375dockerHost>
        <images>
            <image>
                
                <name>${project.artifactId}:${project.version}name>
                <build>
                    <dockerFile>${project.basedir}/src/main/docker/DockerfiledockerFile>
                    <assembly>
                        <name>/name>
                        
                        <descriptorRef>artifactdescriptorRef>
                    assembly>
                build>

                <run>
                    
                    <containerNamePattern>${project.artifactId}containerNamePattern>
                    
                    <ports>
                        <port>8080:8080port>
                    ports>
                run>
            image>
        images>
    configuration>
plugin>

3. maven 命令

  • 构建镜像 mvn clean package docker:build
  • 删除镜像 mvn docker:remove
  • 启动容器 mvn docker:run
  • 停止容器(自动删除容器) mvn docker:stop
  • 完整流程
    mvn clean package docker:stop docker:build dokcer:run

推送镜像到私有镜像仓库

假设私库地址为:192.168.121.129:5000
在镜像名称前缀加上私库地址即可


<name>192.168.121.129:5000/${project.artifactId}:${project.version}name>

推送镜像到私库 mvn docker:push

常见问题

2375 端口不通问题排查

  • 是否开启docker远程访问(lsof -i 2375)
  • 是否关闭防火墙(systemctl status firewalld)
    • systemct stop firewalld && systemct disable firewalld //关闭&禁用防火墙

你可能感兴趣的:(Docker,SpringBoot)