`

使用 Docker 部署 Spring Boot

阅读更多

Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简单,这篇文章我们就来简单学习下。

首先构建一个简单的 Spring Boot 项目,然后给项目添加 Docker 支持,最后对项目进行部署。了解springcloud架构可以加求求:三五三六二四七二五九

一个简单 Spring Boot 项目

在 pom.xml 中 ,使用 Spring Boot 2.0 相关依赖

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
</parent>

 添加 web 和测试依赖

<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>
    </dependency>
</dependencies>

 创建一个 DockerController,在其中有一个index()方法,访问时返回:Hello Docker!

@RestController
public class DockerController {
    
    @RequestMapping("/")
    public String index() {
        return "Hello Docker!";
    }
}

 启动类

@SpringBootApplication
public class DockerApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(DockerApplication.class, args);
    }
}

 添加完毕后启动项目,启动成功后浏览器放问:http://localhost:8080/,页面返回:Hello Docker!,说明 Spring Boot 项目配置正常。

Spring Boot 项目添加 Docker 支持

在 pom.xml-properties中添加 Docker 镜像名称

<properties>
    <docker.image.prefix>springboot</docker.image.prefix>
</properties>

 在 pom.xml-properties中添加 Docker 镜像名称

<properties>
    <docker.image.prefix>springboot</docker.image.prefix>
</properties>

 plugins 中添加 Docker 构建插件:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- Docker maven plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <configuration>
                <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                <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 -->
    </plugins>
</build>

 在目录src/main/docker下创建 Dockerfile 文件,Dockerfile 文件用来说明如何来构建镜像。

  1.  
    FROM openjdk:8-jdk-alpine
  2.  
    VOLUME /tmp
  3.  
    ADD spring-boot-docker-1.0.jar app.jar
  4.  
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

这个 Dockerfile 文件很简单,构建 Jdk 基础环境,添加 Spring Boot Jar 到镜像中,简单解释一下:

  • FROM ,表示使用 Jdk8 环境 为基础镜像,如果镜像不是本地的会从 DockerHub 进行下载
  • VOLUME ,VOLUME 指向了一个/tmp的目录,由于 Spring Boot 使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
  • ADD ,拷贝文件并且重命名
  • ENTRYPOINT ,为了缩短 Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT

这样 Spring Boot 项目添加 Docker 依赖就完成了。

构建打包环境

我们需要有一个 Docker 环境来打包 Spring Boot 项目,在 Windows 搭建 Docker 环境很麻烦,因此我这里以 Centos 7 为例。

安装 Docker 环境

安装

yum install docker

安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动:

  1.  
    ervice docker start
  2.  
    chkconfig docker on
  3.  
     
  4.  
    #LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下:
  5.  
    systemctl start docker.service
  6.  
    systemctl enable docker.service

使用Docker 中国加速器

  1.  
    vi /etc/docker/daemon.json
  2.  
     
  3.  
    #添加后:
  4.  
    {
  5.  
    "registry-mirrors": ["https://registry.docker-cn.com"],
  6.  
    "live-restore": true
  7.  
    }

重新启动docker

systemctl restart docker

输入docker version 返回版本信息则安装正常。

安装JDK

yum -y install java-1.8.0-openjdk*

配置环境变量
打开 vim /etc/profile
添加一下内容

  1.  
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-0.b14.el7_4.x86_64
  2.  
    export PATH=$PATH:$JAVA_HOME/bin

修改完成之后,使其生效

source /etc/profile

输入java -version 返回版本信息则安装正常。

安装MAVEN

下载:http://mirrors.shu.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz

  1.  
    ## 解压
  2.  
    tar vxf apache-maven-3.5.2-bin.tar.gz
  3.  
    ## 移动
  4.  
    mv apache-maven-3.5.2 /usr/local/maven3

修改环境变量, 在/etc/profile中添加以下几行

  1.  
    MAVEN_HOME=/usr/local/maven3
  2.  
    export MAVEN_HOME
  3.  
    export PATH=${PATH}:${MAVEN_HOME}/bin

记得执行source /etc/profile使环境变量生效。

输入mvn -version 返回版本信息则安装正常。

这样整个构建环境就配置完成了。

使用 Docker 部署 Spring Boot 项目

将项目 spring-boot-docker 拷贝服务器中,进入项目路径下进行打包测试。

  1.  
    #打包
  2.  
    mvn package
  3.  
    #启动
  4.  
    java -jar target/spring-boot-docker-1.0.jar

看到 Spring Boot 的启动日志后表明环境配置没有问题,接下来我们使用 DockerFile 构建镜像。

 

mvn package docker:build

 

分享到:
评论

相关推荐

    使用docker部署spring boot.pdf

    Docker 技术发展为微服务落地提供了更加便利的环境,使用 Docker 部署 Spring Boot 其实非常简 单,这篇文章我们就来简单学习下。

    使用Docker部署Spring Boot的方法示例

    主要介绍了使用Docker部署Spring Boot的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Android代码-spring-boot-examples

    Spring Boot Examples Spring Boot 使用的各种示例,以...spring-boot-docker:使用 Docker 部署 Spring Boot 示例 dockercompose-springboot-mysql-nginx :Docker Compose Spring Boot Nginx Mysql 示例 spring-boot

    docker部署springboot应用

    在这篇知识内容中,我们将探讨如何使用Docker部署Spring Boot应用,并关注Maven作为项目管理和构建自动化工具在其中扮演的角色。 首先,了解Maven仓库配置文件的作用至关重要。在Maven项目中,仓库配置文件(通常为...

    开发提升十倍生产力- IDEA 远程一键部署 Spring Boot 到 Docker.zip

    Spring Boot 到 Docker.zip开发提升十倍生产力- IDEA 远程一键部署 Spring Boot 到 Docker.zip开发提升十倍生产力- IDEA 远程一键部署 Spring Boot 到 Docker.zip开发提升十倍生产力- IDEA 远程一键部署 Spring Boot...

    idea集成docker部署springboot项目

    在本文中,我们将讨论如何使用 IntelliJ IDEA 集成 Docker 部署 Spring Boot 项目。该过程涉及到多个步骤,包括配置 Docker、编写 Dockerfile、在 IDEA 中连接服务器 Docker、配置 Docker 镜像容器和启动容器等。 ...

    Docker 部署 运行 spring boot项目

    刚学习Docker,试着用Docker...所以就运行spring boot项目来讲,我的感觉就是使用 docker 简化了jdk安装配置,其它的暂时还没学到 将spring boot项目打包好的jar包上传到云服务器,因为我的docker安装在云服务器上 在j

    使用Docker部署 spring-boot maven应用的方法

    本篇文章主要介绍了使用Docker部署 spring-boot maven应用的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    在Docker中部署Spring Boot项目过程详解

    * 使用Docker容器来部署Spring Boot项目,可以实现微服务架构的落地。 * 使用Maven插件来打包Spring Boot项目,并将其部署到Docker容器中。 五、Docker容器的优点 * 使用Docker容器可以实现微服务架构的落地,提高...

    基于Java的微服务实践,单体微服务创建、Docker部署、Dubbo微服务实践等.zip

    spring-boot-docker Sping Boot使用远程Docker部署 spring-boot-integration Sping Boot多模块示例 spring-boot-dubbo Sping Boot整合Dubbo spring-boot-mybatis Spring Boot集成MyBatis,分页插件PageHelper,通用...

    spring-boot-docker.zip

    使用docker创建spring boot项目镜像项目源代码. 使用docker创建spring boot项目镜像项目源代码.

    spring boot2.0集成docker插件部署

    spring boot2.0集成docker插件,使用socket链接,dockerfile部署到docker服务器

    Spring Boot实战(连接MySQL数据库+使用Spring Data Jpa+配置拦截器及实现跨域访问等)

    Spring Boot实战(连接MySQL数据库+使用Spring Data Jpa+配置拦截器及实现跨域访问+整合Redis使用Docker部署Spring Boot项目+使用AOP的正确姿势+整合Mybatis并完成CRUD操作+整合 thymeleaf+整合 MyBatis (XML 版))

    使用Docker部署SpringBoot项目

    一个简答的demo,阐述如何在Docker上部署SpringBoot项目

Global site tag (gtag.js) - Google Analytics