1 2 3 4 |
FROM openjdk:8-jdk-alpine VOLUME /tmp COPY target/*.jar app.jar ENTRYPOINT ["java","-jar","/app.jar"] |
将Springboot使用Maven打包,在终端中传参进去,进行构建Images。
1 2 3 |
docker build --build-arg=target/*.jar -t demo1/app . #构建完成后启动容器 docker run -p 8080:8080 demo1/app |
1 2 3 4 5 |
FROM openjdk:8-jdk-alpine VOLUME /tmp ARG JAR_FILE COPY ${JAR_FILE} app.jar ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /app.jar ${0} ${@}"] |
指定JVM参数和shell参数
1 |
docker run -p 9000:9000 -e "JAVA_OPTS=-Ddebug -Xmx128m" demo1/app --server.port=9000 |
这个在我另外一篇文章有讲到,都比较简单,有啥问题请留言。
https://github.com/spotify/dockerfile-maven ,能力强的可以直接去看README.md。
简单介绍一下这个插件做啥用的
在pom.xml同目录下创建Dockerfile
1 2 3 4 |
FROM openjdk:8-jre ENTRYPOINT ["/usr/bin/java", "-jar", "/usr/share/myservice/app.jar"] ARG JAR_FILE ADD target/${JAR_FILE} /usr/share/myservice/app.jar |
在pom中添加
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.4.13</version> <executions> <execution> <id>default</id> <goals> <goal>build</goal> <goal>push</goal> </goals> </execution> </executions> <configuration> <!--你需要配置的地方--> <!--指定仓库名/镜像名--> <repository>myrep/${project.artifactId}</repository> <!--指定tag --> <tag>${project.version}</tag> <buildArgs> <!--指定参数jar--> <JAR_FILE>${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> |
最后在Idea Maven插件Plugins点击docker:build即可。或者输入命令
1 |
mvn com.spotify:dockerfile-maven-plugin:build |
Google开源项目Jib,对比上面那个插件Jib的Start数为7.8k,dockerfile-maven 为2.4k。
maven 插件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<plugin> <groupId>com.google.cloud.tools</groupId> <artifactId>jib-maven-plugin</artifactId> <version>1.6.0</version> <configuration> <!--配置基本镜像--> <from> <image>openjdk:8-jdk-alpine</image> </from> <!--配置最终推送的地址,仓库名,镜像名--> <to> <image>registry.hub.docker.com/maoduntt/test</image> </to> </configuration> <!--绑定到maven lifecicle--> <executions> <execution> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> </plugin> |
配置maven docker hub账户和密码,在maven settings.xml中添加
1 2 3 4 5 |
<server> <id>registry.hub.docker.com</id> <username>你的dockerhub用户名</username> <password>你的dockerhub密码</password> </server> |
在idea maven插件中点击或者maven命令 mvn compile jib:buildTar
可以看到推送远程成功,Jib不需要写Dockerfile只需要你在插件中定义构建类型,所以使用时请多参考github的文档。最后现在也有这种开源的容器云平台,可以去了解下。
from:https://zhuanlan.zhihu.com/p/89161347