1. 使用docker-maven-plugin插件
在pom.xml中声明使用docker-maven-plugin插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.11</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
- imageNames是生成镜像的名称
- imageTags是将会生成的标签,如上配置会生成两个镜像,一个标签为latest,一个为当前版本号
- resource中声明将构建输出目录中的jar包拷贝到docker构建目录
- dockerDirectory声明生成docker镜像的文件目录在src/main/docker
2. 声明参数
在pom中使用properties声明一些参数
<properties>
<docker.image.prefix>lblimage</docker.image.prefix>
</properties>
project.version/project.build.directory/project.build.finalName等参数无需声明,会直接取到
3. 新建Dockerfile
FROM frolvlad/alpine-oraclejdk8:slim #包含jdk8的基础镜像
VOLUME /tmp #挂载点 重启后数据还在,这里暂时可以不要这句
ADD test-0.0.1-SNAPSHOT.jar lbltest.jar #拷贝包
ENV JAVA_OPTS="" #配置java参数
#运行镜像时自动启动
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /lbltest.jar"]
4. 构建镜像文件
mvn clean package docker:build
clean package后会在target/docker/目录下生成Dockerfile和jar包
docker:build则会运行Dockerfile的语句,基于jdk8镜像,拷贝jar包,并指定启动时启动java程序。
打包完后可以测试一下
#查看镜像
docker images
#运行镜像
docker run -d -p 8080:8080 lblimage/test
#查看镜像运行状态
docker ps