IDEA一键部署 Spring Boot 到远程 Docker 容器,就是这么秀!

7 篇文章 0 订阅
5 篇文章 0 订阅

    不知道各位小伙伴在生产环境都是怎么部署 Spring Boot 的,打成 jar 直接一键运行?打成 war 扔到 Tomcat 容器中运行?不过据我了解,容器化部署应该是目前的主流方案。

    微服务不同于传统的单体应用,由于服务数量多,部署时候由于环境啊、配置等出现的问题又多,这个时候,结合 Docker 来部署,就可以很好的解决这个问题,这也是目前使用较多的方案之一。

    将 Spring Boot 项目打包到 Docker 容器中部署,有很多不同的方法,今天我主要来和大家聊一聊如何将 Spring Boot 项目一键打包到远程 Docker 容器,然后通过运行一个镜像的方式来启动一个 Spring Boot 项目。

一、准备工作

1、准备 Docker

我这里以 Mac 为例来给大家演示,安装我这里就不说了。也不是今天的主题,具体安装可以看我下一篇文章

下载链接我可以放一个:https://www.docker.com/

2、准备idea

idea安装就不说了,这里需要安装一个插件,点击File->Setting->Plugins->Browse Repositories 

3、配置远程连接地址

配置一下 Docker 的地址,配置完成后,可以看到下面有一个 Connection successful 提示,这个表示 Docker 已经连接上了。

如此之后,我们的准备工作就算是 OK 了。

二、准备项目

接下来我们来创建一个简单的 Spring Boot 项目(只需要引入 spring-boot-starter-web 依赖即可),项目创建成功之后,我们再创建一个普通的 HelloDockerController,用来做测试,如下:

@RestController
public class HelloDockerController {
    @GetMapping("/hello")
    public String hello() {
        return "hello docker!";
    }
}

三、配置 Dockerfile

1、我创建一个 Dockerfile ,作为我镜像的构建文件,具体位置如下图:

具体内容如下

## FROM,表示使用Jdk8环境为基础镜像,如果镜像不是本地的会从DockerHub进行下载
FROM openjdk:8-jdk-alpine
# 作者
MAINTAINER qiwu
## VOLUME,VOLUME指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。
## 这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp
# WORKDIR /server-config
## ADD,拷贝文件并且重命名
ADD server-config.jar app.jar
## ENTRYPOINT,为了缩短Tomcat的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为ENTRYPOINT
# RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
# 指定容器需要映射到主机的端口
EXPOSE 8888

2、pom文件添加插件

<!-- Docker maven plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!--                    <imageTags>-->
<!--                        <imageTag>${project.version}</imageTag>-->
<!--                    </imageTags>-->
<!--                    <forceTags>true</forceTags>-->
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- Docker maven plugin -->

 

这个插件的配置不难理解:

  1. 首先在 execution 节点中配置当执行 mvn package 的时候,顺便也执行一下 docker:build

  2. 然后在 configuration 中分别配置 Docker 的主机地址,镜像的名称,镜像的 tags,其中 dockerDirectory 表示指定 Dockerfile 的位置。

  3. 最后 resource 节点中再配置一下 jar 的位置和名称即可。

OK,做完这些我们就算大功告成了。

 

四、maven打包

这样启动成功

五、启动

1、命令启动

docker run -p 8080:8080 -t springboot/server-config

2、idea启动

 

 

创建启动

设置端口,名字

 

启动和启动程序一样,右边是日志

项目运行成功之后,在浏览器输入远程服务器的地址,就可以访问了:

如此之后,我们的 Spring Boot 项目就算顺利发布到远程 Docker 容器中了。

好玩吗?试试!

 

 

个人博客:
名称:纯洁的麦田
链接:http://www.idearyou.cn/
描述:争取哪一天做上架构师
公众号:纯洁的麦田

另外:个人公众号,每天有新java文章,还有中高级面试题分享

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值