赞
踩
- FROM openjdk:8-jdk-alpine
- VOLUME /tmp
- COPY target/*.jar app.jar
- ENTRYPOINT ["java","-jar","/app.jar"]
将 Springboot 使用 Maven 打包,在终端中传参进去,进行构建 Images。
- docker build --build-arg=target/*.jar -t demo1/app .
- #构建完成后启动容器
- docker run -p 8080:8080 demo1/app
- 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 参数
docker run -p 9000:9000 -e "JAVA_OPTS=-Ddebug -Xmx128m" demo1/app --server.port=9000
这个在我另外一篇文章有讲到,都比较简单,有啥问题请留言。
https://github.com/spotify/dockerfile-maven ,能力强的可以直接去看 README.md。
简单介绍一下这个插件做啥用的
通过 pom 配置 docker 构建 Image 过程,参数等 。
封装了自动化 build,push,run 等 Maven 命令 。*
需要依赖 Dockerfile,Dockerfile 与 pom.xml 位于同一个目录下。
在 pom.xml 同目录下创建 Dockerfile
- 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 中添加
- <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 即可。或者输入命令
mvn com.spotify:dockerfile-maven-plugin:build
Google 开源项目 Jib,对比上面那个插件 Jib 的 Start 数为 7.8k,dockerfile-maven 为 2.4k。maven 插件
- <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 中添加
- <server>
- <id>registry.hub.docker.com</id>
- <username>你的dockerhub用户名</username>
- <password>你的dockerhub密码</password>
- </server>
在 idea maven 插件中点击或者 maven 命令 mvn compile jib:buildTar
可以看到推送远程成功,Jib 不需要写 Dockerfile 只需要你在插件中定义构建类型,所以使用时请多参考 github 的文档。最后现在也有这种开源的容器云平台,可以去了解下。
作者:maodun
来源链接:
https://zhuanlan.zhihu.com/p/89161347
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。