用Docker部署Springboot 项目

本文详细介绍了如何在Ubuntu环境下安装Docker和Maven,然后在SpringBoot项目中添加Docker支持,通过编写Dockerfile文件,并最终部署和测试SpringBoot应用。主要步骤包括环境搭建、项目改造和Docker镜像构建与运行。
摘要由CSDN通过智能技术生成

用Docker部署Springboot 项目


​ 本文使用Docker部署Spring Boot项目。部署之前需要环境中已经安装Docker和Maven(用于打包),所以本文先进行安装Docker和Maven;接着搭建一个Spring Boot项目,使其支持Docker部署;最后进行部署和测试。

一、环境搭建

1.ubuntu环境下docker安装

参考教程:https://www.cnblogs.com/blog-rui/p/11244023.html

  • 安装完成后启动Docker服务,并设置为开机自启动

使用下列命令:

systemctl start docker.service 
systemctl enable docker.service
  • 查看版本信息

输入docker version,返回版本信息表明Docker安装成功。

2.安装Maven和配置阿里云镜像

  • 下载Maven
在某个文件夹打开终端,执行以下命令行

wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
  • 解压和移动
tar vxf apache-maven-3.5.4-bin.tar.gz  

//下面的“/usr/local/maven3”为想要移动的目录,这里的移动是将“apache-maven-3.5.4”文件夹里的东西放到“/usr/local/maven3”目录下
mv apache-maven-3.5.4 /usr/local/maven3
  • 配置环境变量

打开环境变量vim /etc/profile,在最下面添加如下内容:

MAVEN_HOME=/usr/local/maven3 
export MAVEN_HOME 
export PATH=${PATH}:${MAVEN_HOME}/bin

保存并退出::wq

刷新环境变量的配置使其生效:source /etc/profile

  • 查看版本信息

使用命令mvn -v进行查看

[root@localhost ~]# mvn -v Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00) Maven home: /usr/local/maven3 Java version: 1.8.0_211, vendor: Oracle Corporation, runtime: /usr/local/java/jdk1.8.0_211/jre Default locale: zh_CN, platform encoding: UTF-8 OS name: "linux", version: "3.10.0-957.el7.x86_64", arch: "amd64", family: "unix"
  • 配置maven的阿里云镜像

切换到maven安装目录的配置文件(/usr/lcoal/maven3/conf)下面,打开settings.xml文件,在<mirrors>标签里面添加:

<mirror> 
    <id>alimaven</id> 
    <name>aliyun maven</name> 
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
    <mirrorOf>central</mirrorOf> 
</mirror> 
<!-- 上面的镜像可能有点问题,两个一起用 -->
<mirror>
	<id>nexus-aliyun </id>
	<mirrorOf>central </mirrorOf>
	<name>Nexus aliyun </name>
	<url>http://maven.aliyun.com/nexus/content/repositories/central </url>
</mirror>

二、Spring Boot项目添加Docker支持

1.新建Spring Boot工程——hellotest

启动类如下:

@RestController
@SpringBootApplication
public class HellotestApplication {

    public static void main(String[] args) {

        SpringApplication.run(HellotestApplication.class, args);
    }

    @RequestMapping("/")
    public String hello(){
        return "Hello,Springboot with Docker!";
    }

}

2.添加Docker支持

在 pom.xml中添加Docker镜像名称及添加 Docker插件。

  • <properties> 标签里添加。
<properties>   
 	<docker.image.prefix>springboot</docker.image.prefix> 
</properties>
  • <build> --> <plugins> 标签里添加
<!-- docker插件 -->
        <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>

3.编写Dockerfile文件

在Springboot工程目录src/main下创建Directory命名为dockerDockerfile 文件,Dockerfile 文件用来说明如何来构建镜像。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD docker-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  • FROM指令指定一个已经存在的镜像,告诉Docker后续的指令都是在这个基础上进行的。例如:FROM java:8表示使用 Jdk1.8 环境为基础镜像进行构建镜像。

  • VOLUME ,VOLUME 指向了一个/tmp的目录,由于Spring Boot使用内置的Tomcat容器,Tomcat 默认使用/tmp作为工作目录。这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录

  • ADD ,拷贝文件并且重命名

  • ENTRYPOINT,为了缩短Tomcat 的启动时间,添加java.security.egd的系统属性指向/dev/urandom作为ENTRYPOINT。

三、部署Spring Boot工程

将主机的项目代码拷贝服务器或虚拟机中,在虚拟机中进入项目路径。如编者是“/usr/local/projects/hellotest”.

  • 在项目路径下运行终端,通过maven指令进行打包
mvn package

若报错中包含以下这一句

Unknown host maven.aliyun.com: 域名解析暂时失败 -> [Help 1]

则可以尝试如下修改

在终端输入指令vim /etc/resolv.conf然后加入nameserver 114.114.114.114

  • 执行如下指令,运行项目
java -jar target/hellotest-0.0.1-SNAPSHOT.jar

如出现以下界面,代表项目启动成功,说明环境配置没有问题,接下来可以使用Dockerfile构建镜像。

img

  • 执行如下指令,构建Docker镜像
mvn package docker:build

img

可以看到docker镜像构建成功,仔细看日志,会发现四个步骤和Dockerfile中的指令是一一对应的。

  • 使用docker images命令查看构建好的镜像:

在这里插入图片描述

  • 运行docker镜像
docker run -d -p 8080:8080 -t springboot/hellotest
  • 在虚拟机浏览器进行访问,可以看到返回结果,说明部署成功。
    在这里插入图片描述

部分内容参考博客:https://www.cnblogs.com/sgh1023/p/11079003.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值