通过网上资料查找,大致可以分为两种方式,
第一种: 首先将项目package打包成jar包,放到和dockerfile文件所在的目录下,执行docker build 和docker run即可:
首先需要做一些配置:
在pom.xml中添加以下配置:
在properties下添加:
<!--docker构建配置1:配置properties--><docker.image.prefix>registry.aliyuncs.com/linhuatest</docker.image.prefix>
添加后如图:
在plugins节点添加构建的plugin:
<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--docker配置2:解决容器启动提示no main manifest attribute--> <configuration> <mainClass>com.macro.cloud.Oauth2AuthApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> <!--docker配置3:package打包用到 docker插件 新建dockerfile文件,将项目打包成jar后放到dockerfile所在目录下,然后执行docker build和docker run命令--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <!--docker文件所在的目录--> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
配置完后,点项目的src/main下新建一个docker目录,在这个目录下新建一个dockerfile
dockerfile:
java:8 /tmp/tomcat micro-oauth2-auth-1.0.0.jar springboot-auth.jar [,,,]
Dockfile配置文件详解
VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
项目的 jar 文件作为 “app.jar” 添加到容器的
ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 “/dev/urandom” 作为 Entropy Source
以上步骤完成后,点击package打包,并且将打包后的jar文件复制到上面的docker目录下。然后在cmd命令行执行docker build和run命令,通过此种方式,本地已经构建并成功运行。
第二种:mvn clean package docker:build命令构建镜像
我本地用的是window环境,所以,首先需要先安装maven,maven官网下载地址:http://maven.apache.org/download.cgi
下载后解压是一个文件目录,配置好环境变量(这里可以百度具体教程),maven其实就是配置环境变量,配置完成后在cmd下执行一下:
mvn -version 检查一下是否安装正确。
mvn安装后首先在cmd下将目录定位到项目下:
执行mvc clean package docker:build命令
提示:No plugin found for prefix 'docker' in the current project and in the plugin groups
解决方法:在maven的安装目录conf/setting.xml中加入
<!--解决mvn bulid 报错问题--> <pluginGroup>com.spotify</pluginGroup>
如图:
再次执行mvc clean package docker:build命令,依然报错:
错误信息:
Failed to execute goal com.spotify:docker-maven-plugin:1.0.0:build (default-cli) on project micro-oauth2-auth: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect -> [Help 1]
这里需要设置一下docker的配置:
设置之后在执行命令:
执行成功。
执行docker images命令查看刚才build的镜像:
然后执行docker run分配ip,实测请求接口成功。