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

avatar 2020年1月30日11:43:20 评论 327 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访问,可以正常访问

历史上的今天
一月
30
  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: