1、在idea中创建项目,如下图
2、配置docker maven plugin
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<forceTags>true</forceTags>
<dockerHost>http://192.168.132.129:2375</dockerHost>
<imageName>${project.groupId}/${project.build.finalName}</imageName>
<workdir>/</workdir>
<baseImage>java</baseImage>
<cmd>["java", "-version"]</cmd>
<entryPoint>["java", "-jar", "./${project.build.finalName}.jar"]</entryPoint>
<dockerDirectory>${project.basedir}/</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<imageTags>
<imageTag>${project.version}</imageTag>
<imageTag>latest</imageTag>
</imageTags>
</configuration>
</plugin>
3、启动服务器并启动docker(服务器地址192.168.132.129)
4、idea连接docker,如下图
注:如果连接不成功,看Docker开启远程访问没有,没有则配置如下
服务器中:vim /usr/lib/systemd/system/docker.service
#修改ExecStart这行
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
#重新加载配置文件
systemctl daemon-reload
#重启服务
systemctl restart docker.service
#查看端口是否开启
netstat -nlpt
#直接curl看是否生效
curl http://127.0.0.1:2375/info
5、创建DockerFile文件,如下
Dockerfile内容
#表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
FROM java:8
#VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。
#这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp
#拷贝文件并且重命名
ADD ./target/springboot-docker-demo-1.0.0.jar /docker-demo-1.0.0.jar
RUN bash -c 'touch /docker-demo-1.0.0.jar'
EXPOSE 7001
#为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/docker-demo-1.0.0.jar"]
6、编辑 idea Dockerfile 配置,如下图
7、创建docker 镜像,点击dockerfile中的“Build Image for Dockerfile”
控制台的Deploy Log提示,如下
服务器docker中查看镜像
8、运行项目,点击dockerfile中的“Run Dockerfile”
控制台运行结果,如下
服务器docker中查看项目运行情况,如下
9、浏览器中访问项目,在浏览器地址栏中输入地址:http://192.168.132.129:7001/test,输出如下图
---------------------------------------------------
在src下创建docker文件夹,新建Dockerfile文件,如下图
Dockerfile文件内容
#表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
FROM java:8
#VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。
#这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp
ARG JAR_FILE=./target/springboot-docker-deploy-demo-1.0.0.jar
COPY ${JAR_FILE} /docker-deploy-demo-1.0.0.jar
EXPOSE 7001
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom -Dspring.profiles.active=dev","-jar","/docker-deploy-demo-1.0.0.jar"]
编辑 idea Dockerfile 配置,如下图
idea Dockerfile配置内容如下
Name: 选择Dockerfile路径
Server: 选择 docker server
Dockerfile: src\docker\
Image tag: 随意起(如 docker-deploy-demo)
Container name: 随意起(如 springboot-docker-deploy-demo)
Command: -t --restart=always
Publish exposed ports to the host interfaces: 选 Specify
Bind ports: server ip:7001:7001
使用 dockerfile-maven-plugin 和 maven-dependency-plugin
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<configuration>
<dockerfile>Dockerfile</dockerfile>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
<!-- 指定到相对路径下-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-artifact</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>${project.packaging}</type>
</artifactItem>
</artifactItems>
<outputDirectory>${basedir}/src/docker</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
项目源码地址:https://gitee.com/lion123/springboot-docker-deploy-demo
来源:oschina
链接:https://my.oschina.net/lion1220/blog/3161492