docker 部署 springboot 项目

前言:

        关于 dokcer 的安装已经在上文介绍过,有兴趣的同学可以去了解下。

正文:

        首先大概说一下 docker、镜像、容器的关系。镜像可以理解为是虚拟机,有很多种,比如服务器镜像、java镜像等等。容器可以理解为是基于镜像创建的一个独立的空间,我们的项目就是跑在容器里面的。而 docker 则是来操作镜像和容器的工具。镜像跟容器之间的关系为:一个镜像可以对应多个容器,容器必须依赖于镜像而存在,镜像为容器提供了相应环境。(均为个人理解,有不对的地方还请各位同学指正!)

准备:

        保证服务器安装 docker,腾讯云 CentOS7.6 服务器

部署项目方法一:

1、拉取 java 镜像

docker search java   #这是 docker 命令,意为在 docker hub 上查找关于 java 的镜像

docker pull java:8   #拉取 java:8 镜像,也就是我们运行 springboot 项目所需的环境(因为 
                     springboot 项目内置了 tomcat,所以不需要 tomcat 镜像)

docker images   #查看镜像列表

注:docker rmi 镜像ID或镜像名   #删除镜像(有些镜像通过镜像名删除不了,所以得用镜像ID来删除)

2、将项目打包,然后通过 xftp 工具将 jar 包传到服务器(可以是默认目录,也可以自定义目录,笔者的目录为 /root/project/getapp)

3、通过 docker 命令来创建容器、挂载项目、启动项目


docker run --name getapp -d -p 3301:8081 -v /root/project/getapp/getmusic-0.0.1-
SNAPSHOT.jar:/root/project/getapp/getmusic-0.0.1-SNAPSHOT.jar java:8 nohup java -jar
/root/project/getapp/getmusic-0.0.1-SNAPSHOT.jar &

注:docker run --name getapp:创建一个容器,名称为 getapp
    -d -p:-d 为后台运行容器,-p 为随机端口映射(好像不需要,但也不影响)
    3301:8081:指定容器端口号为3301,8081是你项目端口号
    -v /root/project/getapp/getmusic-0.0.1-SNAPSHOT.jar:/root/project/getapp/getmusic- 
    0.0.1-SNAPSHOT.jar:将你的项目挂在到容器的这个位置(我这里都是项目 jar 包所在的位置)
    java:8:指定容器依赖的镜像为 java:8,也就是之前拉取的
    nohup:后台永远运行
    java -jar /root/project/getapp/getmusic-0.0.1-SNAPSHOT.jar:运行项目
    &:即使服务器死机也运行

4、完成后我们就会看到一个名为 getapp 的容器

docker ps   #查看当前运行的容器列表
注:docker ps -a   #查看所有容器列表
    docker rm -f(容器名或容器ID)   #删除当前运行的容器
    docker rm (容器名或容器ID)   #删除未运行的容器   

 5、检查项目是否正常启动

docker logs (容器名)   #可以通过查看 docker 日志来检查项目是否正常启动 

6、访问项目接口

http://服务器Ip:容器端口号/接口url    #访问接口
比如:http://11.111.111.111:1111/api/student/list

注:笔者使用的是腾讯云CentOS7.6服务器,如果你给实列加了安全组,就得开通 3301(容器端口号)的校验规则,如果没有加安全组好像就不用管。如果你使用的是阿里云,那就得开放 3301(容器端口号)端口号。 

 7、更新服务器:只需要将 jar 包传至相同位置,然后重启 docker 就行

docker restart (容器名)   #重启 docker
注:理论上我们支持一个容器放一个项目

 

部署项目方法二:

1、开始时不需要拉取镜像,只需安装 docker 即可。首先将项目 jar 包传至服务器(笔者这里的位置为 /root/project/getapp),然后进入项目 jar 所在位置,创建 Dockerfile 文件

cd project/getapp   #进入项目所在位置
vim Dockerfile   #创建 Dockerfile 文件并编写以下代码

FROM java:8   #基础镜像
MAINTAINER xgllhuangzi<******@163.com>   #作者
VOLUME /tmp   #指定临时目录为 /tmp
ADD getmusic-0.0.1-SNAPSHOT.jar getapp.jar   #将jar 包添加到容器中并更名为 getapp
RUN bash -c 'touch /getapp.jar'   #操作镜像
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/getapp.jar"]   #运行项目

按 esc 退出编辑,然后 :wq 保存退出

2、创建镜像

docker build -t getappi .   #实际上是以 java:8 镜像为基础创建镜像,
只不过是将镜像与项目绑定在了一起,也就是 Dockerfile 文件中的 FROM java:8 这一句

3、创建容器

docker run --name getapp 3301:8081 -d -p getappi   #解释在方法一中有

4、查看镜像、查看容器是否创建成功,检查项目是否正常启动(具体命令见方法一)

 

注:两种方法的区别:

    1、方法一中,项目是基于镜像的,方法二中,项目是跟镜像绑定在一起的。

    2、方法一中,如果你部署 springboot 项目的话,只需要一个 java:8 镜像就可以了,也就是说不管你部署多少个项目,只需要一个镜像。但是在方法二中,你每部署一个项目,就会创建一个镜像(因为方法二中项目跟镜像是绑定在一起的),而一个镜像大概 600M-700M,这就会浪费服务器资源。

    3、方法而要比方法一标准,也就是通过 Dockerfile 的方式部署更加标准。

 

        所以具体选择哪一种还得视情况而定,如果你服务器贼强的话完全可以选择第二种!(充钱你就会变得更强!)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 很高兴为您解答,Docker可以帮助您快速部署Spring Boot项目。您可以使用Dockerfile来构建Docker镜像,然后将其部署Docker容器中。另外,您还可以使用Docker Compose来管理多个容器,从而更轻松地部署Spring Boot应用程序。 ### 回答2: Docker是一个开源的容器化平台,可以帮助我们更简单地部署和管理应用程序。在使用Docker部署Spring Boot项目时,我们可以按照以下步骤进行操作: 1. 首先,我们要在本地环境中安装Docker。可以访问Docker官方网站下载适合自己操作系统的安装程序,并按照安装向导进行安装。 2. 接下来,我们要创建一个用于构建镜像Dockerfile。Dockerfile是一个文本文件,定义了Docker镜像的构建流程。在Dockerfile中,我们要设置基础镜像、添加项目文件、定义容器的启动命令等。例如,一个简单的Dockerfile可以是这样的: ```dockerfile FROM openjdk:11-jdk-slim COPY target/myproject.jar /app/myproject.jar WORKDIR /app CMD ["java", "-jar", "/app/myproject.jar"] ``` 在这个例子中,我们使用了OpenJDK 11作为基础镜像,将编译好的Spring Boot项目文件"myproject.jar"复制到容器的/app目录下,并设置了容器的启动命令。 3. 当Dockerfile准备好后,我们可以使用Docker命令来构建镜像。在命令行中,进入到项目的根目录,使用以下命令进行构建: ``` docker build -t myimage . ``` 这个命令会根据当前目录下的Dockerfile文件构建一个名为"myimage"的镜像。 4. 构建完成后,我们可以使用以下命令运行镜像,并将项目暴露在主机的某个端口上: ``` docker run -d -p 8080:8080 myimage ``` 此命令会在后台运行名为"myimage"的镜像,并将容器的8080端口映射到主机的8080端口。 至此,我们已经成功地将Spring Boot项目部署Docker容器中。我们可以通过浏览器访问本地主机的8080端口,来访问项目。 总结起来,使用Docker部署Spring Boot项目可以帮助我们更方便地打包、分发及部署应用程序,提高开发和运维效率。 ### 回答3: Docker 是一种容器化技术,可以帮助我们更方便地部署和管理应用程序。下面是使用 Docker 部署 Spring Boot 项目的步骤: 1. 下载并安装 Docker 平台,确保 Docker 已成功安装并能正常运行。 2. 在 Spring Boot 项目的根目录下创建一个 Dockerfile 文件。Dockerfile 是用来定义 Docker 容器的构建和运行环境的文件。 3. 打开 Dockerfile 文件,并添加以下内容: ``` FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/springboot-app.jar app.jar ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] EXPOSE 8080 ``` 这个 Dockerfile 文件指定了使用 openjdk:8-jdk-alpine 镜像作为基础镜像,将 Spring Boot 项目的 jar 文件添加到容器中,并设置容器的入口点为启动 Spring Boot 应用程序。 4. 在命令行中进入到 Spring Boot 项目的根目录,并执行以下命令来构建 Docker 镜像: ``` docker build -t my-springboot-app . ``` 这个命令会在当前目录下构建一个名为 my-springboot-app 的 Docker 镜像。 5. 构建完成后,可以使用以下命令来运行这个 Docker 镜像: ``` docker run -p 8080:8080 my-springboot-app ``` 这个命令会启动一个新的 Docker 容器,并将容器的 8080 端口映射到主机的 8080 端口上。 6. 现在可以通过访问 http://localhost:8080 来访问 Spring Boot 应用程序。 通过这些简单的步骤,我们就可以使用 Docker部署运行 Spring Boot 项目了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值