Springboot打包镜像

使用start.spring.io生成了一个spingboot的项目,然后考虑打包生成镜像来发布;然后搜了下,网上有使用"com.spotify dockerfile-maven-plugin"这个插件的,我本来也是用的这个,但是在打包的时候总是告诉我2375端口连接不上啥的报错;所以换成了jib-maven-plugin这个插件来打包镜像,过程比较简单:

1>在pom.xml中添加依赖


    com.google.cloud.tools
    jib-maven-plugin
    1.6.1
    
        
            adoptopenjdk:11-jre-hotspot
        
        
            sophon-api:latest
        
        
            
                bash
                
                chmod +x /entrypoint.sh && sync &&/entrypoint.sh
            
            
                8080
            
            
                ALWAYS
                0
            
            USE_CURRENT_TIMESTAMP
        
    

这里指定了我们得镜像基于adoptopenjdk:11-jre-hotspot,to image是打包生成的镜像,from里面也可以指定你自己的镜像,我用的阿里的,不然太慢,总是连接有问题,可以替换from如下


    registry.cn-hangzhou.aliyuncs.com/xxxxxx/adoptopenjdk:11-jre-hotspot
    
        用户
        密码
    

container中设置启动的脚本或者命令,这里使用的entrypoint.sh脚本来启动;

2.entrypoint.sh内容如下

Springboot打包镜像_第1张图片

目录结构如下所示,内容这里参考了jhipster的entrypoint.sh:

#!/bin/sh

echo "The application will start in ${JHIPSTER_SLEEP}s..." && sleep ${JHIPSTER_SLEEP}
exec java ${JAVA_OPTS} -noverify -XX:+AlwaysPreTouch -Djava.security.egd=file:/dev/./urandom -cp /app/resources/:/app/classes/:/app/libs/* "com.future.net.dataSetApi.DataSetApiApplication"  "$@"

设置了下启动的类就可以了;这里的java -cp 是指定类运行所依赖其他类的路径;

3.执行生成镜像的命令:

mvn compile jib:dockerBuild

4.为了方便,我会建一个docker-compose 文件来启动

在src/main/docker目录下创建一个app.yml内容如下所示:

version: '2'
services:
  sophon-api:
    image: my-app
    environment:
      - _JAVA_OPTIONS=-Xmx512m -Xms256m
      - SPRING_PROFILES_ACTIVE=prod,swagger
    ports:
      - 8080:8080

设置暴露的端口和环境参数

生成镜像之后,可以通过docker-compose -f app.yml up -d 来启动

5.容器中的app目录下是我们的编译之后的文件

entrypoint.sh在跟目录下,也是项目的启动脚本命令

 

你可能感兴趣的:(基础知识)