IDEA Maven Docker 部署 Springboot 项目,推送远程仓库,服务器部署

avatar 2020年01月30日11:43:20 0 2170 views
IDEA 是我们 Java 开发者必备

一、IDEA Docker 插件安装


1、安装 Docker integration 插件,IDEA 专业版默认是已经安装的



如果没有安装需要安装并重启IDEA

2、配置 Docker

这里选 TCP socket,正常情况填 tcp://IP地址:2375

因为博主是 Mac,docker 的 socket 端口 2375 没有打开,配置比较麻烦

我启动了一个 1234 端口,MAC系统参考这里



 

二、Springboot 项目配置


1、创建了一个简单的 HelloWorld 级别的项目用于测试

代码地址:https://github.com/saysky/test-maven-docker




 

运行启动类,访问 localhost:8080/hello,没问题



 

2、修改 pom.xml 添加 docker plugin

pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.liuyanzhao</groupId>
<artifactId>test-maven-docker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>test-maven-docker</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
<docker.image.prefix>saysky</docker.image.prefix>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>

<build>
<plugins>
<!-- maven打包 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

<!-- docker打包 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>

<!--将插件绑定在某个phase执行-->
<executions>
<execution>
<id>build-image</id>
<!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build-->
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!--指定标签-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定 Dockerfile 路径-->
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<!--指定远程 docker api地址,需要修改成你自己的ip和端口-->
<dockerHost>http://localhost:1234</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>

</project>

 

三、创建 DockerFile


1、在项目根目录创建 Dockerfile 文件
# From java image, version : 8
#指定镜像,这里用网易云仓库的java8镜像
FROM hub.c.163.com/library/java:8-jre

# 挂载test-docker目录
VOLUME /tmp

# COPY or ADD to image
COPY test-maven-docker-0.0.1-SNAPSHOT.jar app.jar

RUN bash -c "touch /app.jar"
#默认8080端口,我的server.port=80
#指定项目暴露的端口号,与项目配置一样,即容器配置的暴露端口
EXPOSE 80
ENTRYPOINT ["java", "-jar", "app.jar"]

 

如下图

说明下,我的电脑80端口用不了,我这里对外暴露访问用 8080,大家如果是 windows 或者 linux可以用 80



 

四、项目打包


先后执行 clean 和 package

或者用命令执行 mvn clean package



执行完毕



 

五、创建 Docker 容器


1、启动IDEA内docker









 

2、展开可以看到镜像列表和容器列表

如下图,其中有很多镜像和容器是我之前创建的,这里不用管

我们只需要在 Images 里找到 saysky/test-maven-docker:latest 这个镜像即可



 

3、右键选择创建容器,创建

说明:因为Mac上80端口处于保护状态,我这里对外暴露使用 8080 端口

如果大家要用 80,可以填 80:8080



然后点 Run 运行,运行成功访问 localhost:8080/hello 和之前正常

通过 docker ps 命令查看也能看到这个容器



 

六、将镜像推送到远程仓库


为了方便我们在服务器上部署,将镜像推送到 dockerHub

1、在 DockerHub 注册一个账号

2、IDEA 里 Docker 下 选择我们要推送的镜像,右键 Push Image...



3、进入下图界面,点击 New,准备设置仓库地址和账号密码



 

4、输入仓库地址和账号密码邮箱



5、然后点击OK,点击OK

如果账号密码没错的话,会出现下面正在推的进度条



 

6、去 DockerHub 我的个人主页就可以看到这个镜像

 

七、在服务器部署测试


前端时间腾讯云搞活动买了一台新的服务器

正好可以用来测试,我买的 Centos7.3

1、安装 Docker
yum install docker

 

2、启动 Docker
service docker start

 

3、拉取镜像

docker pull saysky/test-maven-docker

 

4、创建容器

docker run -itd --name test-maven-docker -p80:8080 saysky/test-maven-docker:latest bash

也可以不执行第三步,直接执行第四步,镜像本地不存在会默认从 dockerhub 拉取

创建后会自动运行,这里我们是映射到外部的80端口

 

5、访问测试

通过服务器公网ip访问,可以正常访问





  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

avatar 登录者:匿名
可以匿名评论或者登录后台评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0