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

avatar 2020年01月30日11:43:20 6 6761 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此
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
  • 个人淘宝
  • 店铺名:言曌博客咨询部

  • (部分商品未及时上架淘宝)
avatar

发表评论

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

  

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