GVKun编程网logo

docker在centos7上部署springboot项目(docker如何部署springboot项目)

15

想了解docker在centos7上部署springboot项目的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于docker如何部署springboot项目的相关问题,此外,我们还将为您介绍

想了解docker在centos7上部署springboot项目的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于docker如何部署springboot项目的相关问题,此外,我们还将为您介绍关于Centos7部署springboot.jar项目、Centos8.3、docker部署springboot项目实战案例分析、centos服务器+docker,从0部署springpoot项目、Centos部署springboot项目war包的新知识。

本文目录一览:

docker在centos7上部署springboot项目(docker如何部署springboot项目)

docker在centos7上部署springboot项目(docker如何部署springboot项目)

1、mkdir创建文件夹如下命令:

    mkdir demon

2、把本地打好的jar包上传到该目录中去

3、创建Dockerfile文件并和jar包在同一目录,文件内容如下:

#获取base image
FROM java:8
#类似于执行 linux指令
RUN mkdir /opt/app
#类似于linux copy指令,绿色字体为jar包名
COPY AigyunManager-0.0.1-SNAPSHOT.jar /opt/app/    
#对外端口
EXPOSE 8099
#执行命令 java -jar /opt/app/AigyunManager-0.0.1-SNAPSHOT.jar
CMD ["java", "-jar", "/opt/app/AigyunManager-0.0.1-SNAPSHOT.jar"]

4、运行创建镜像命令 docker build -t 镜像名 . 意思是在当前目录下构建镜像文件

5、使用命令docker images 命令可以查看已创建的镜像

 

6、然后运行docker run -d -p 8087:8099 aigyun-m 命令

解释:

-d表示以守护进程运行

-p 8087:8099表示宿主机端口映射容器8099端口

    aigyun-m表示docker仓库的名称

7、验证是否启动成功

    运行查看日志命令docker logs -f -t --tail 500 aigyun-mm可以查看日志信息,如下图

-------------------------------亲测可行,请多多指教!

 

Centos7部署springboot.jar项目

Centos7部署springboot.jar项目

1.增加服务文件

#进入系统服务目录
cd /etc/systemd/system/
#创建服务类型的文件
vim demo.service

2.编辑内容

[Unit]
Description=demo
After=syslog.target

[Service]
ExecStart=/usr/local/java/jdk1.8.0_151/bin/java -jar /usr/local/project/demo.jar

[Install]
WantedBy=multi-user.target

只需要修改 Description 与 ExecStart 的值。

3.服务操作

#启动服务
systemctl start demo
#或者
systemctl start demo.service

#停止服务
systemctl stop demo
#或者
systemctl stop demo.service

#服务状态
systemctl status demo
#或者
systemctl status demo.service

#开机启动
systemctl enable demo
#或者
systemctl enable demo.service

#项目日志
journalctl -u demo
#或者
journalctl -u demo.service

Centos8.3、docker部署springboot项目实战案例分析

Centos8.3、docker部署springboot项目实战案例分析

引言

目前k8s很是火热,我也特意买了本书去学习了一下,但是k8s动辄都是成百上千的服务器运维,对只有几台服务器的应用来说使用k8s就有点像大炮打蚊子。只有几台服务器的应用运维使用传统的tomcat部署很繁琐,效率不高,动辄十几分钟部署一台服务,使用jenkins部署又太过复杂,斟酌许久我还是选择了使用docker+dockerFile的方式部署。这种方式部署简单高效。

docker安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun #一键安装脚本
systemctl enable docker.service                                    #设置docker开机启动
systemctl restart docker.service                                   #启动docker服务

开启docker远程访问端口

编辑/usr/lib/systemd/system/docker.service文件添加-Htcp://0.0.0.0:12375 -H unix://var/run/docker.sock 如下图:

保存文件后重新加载配置然后重新启动

systemctl daemon-reload           # 重新加载配置
    systemctl restart docker.service  # 重启docker服务

注意:-Htcp://0.0.0.0:12375 这句话的意思任意ip都可以使用tcp访问这个端口可以根据实际情况匹配IP。因为这里没有token或者密钥所以要特别注意如果使用云服务器那么强烈建议这里设置为安全组IP白名单访问。我当初在测试环境使用docker发布三四个小时就被人攻击了不过当初我是用的2375端口,这个端口特别容易被攻击。

配置IDEAdocker环境

idea安装docker环境插件如下图:

安装完成后重启idea然后打开springboot项目,在根目录创建Dockerfile文件。如下图:

编辑Dockerfile如下:

FROM openjdk:11
# 镜像是从 openjdk:11-jdk-alpin 继承而来的
 
VOLUME /root/tmp
# 表示挂载了 /root/tmp 目录到容器中
 
ADD build/libs/brief-plus-0.0.1-SNAPSHOT.jar apprun.jar
# 将bootJar 添加到镜像中根目录下 命令为 apprun.jar
 
ENTRYPOINT ["java","-jar","/apprun.jar"]
# ENTRYPOINT 在容器启动后执行 java 命令来运行程序
 
# 设置容器时间
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# ======= 其它的一些Dockerfile命令 ========== 这里我们没有用到不过还是提一下
#COPY package.json /usr/src/app/
#ADD 更高级的复制文件
#ADD 指令和 COPY 的格式和性质基本一致。但是在 COPY 基础上增加了一些功能。
#CMD 指令就是用于指定默认的容器主进程的启动命令的。
#ENV 设置环境变量
#HEALTHCHECK 健康检查
#EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8090

主要注意build/libs/brief-plus-0.0.1-SNAPSHOT.jar apprun.jar 这句话。 我是用的gradle编译后的文件位于build/libs/ 目录下 如下图:

maven编译后的文件位于target目录下如下图:

Dockerfile是根据具体的目录和打包后的名称来获取生成镜像文件所以这里一定不能出错。

配置Docker服务

配置运行环境

创建一个tcp连接服务

3.配置发布到docker的服务

绑定端口ip的详细配置

打包发布

心得建议

1.docker的镜像文件会分块,每块都有自己的签名,每次上传会进行对比差异的文件才会重新上传。

2.每次上传的时候记得更改标签方便根据标签进行回滚。

3.修改服务器的网络配置、防火墙需要重启docker服务。

docker 常用命令:

重启docker

systemctl restart docker      # 重启docker服务
systemctl daemon-reload    # 重新加载docker配置

查看30分钟内的日志

docker logs --since 30m id

以上就是Centos8.3、docker部署springboot项目实战记录的详细内容,更多关于docker部署springboot项目的资料请关注其它相关文章!

您可能感兴趣的文章:
  • 在Idea中使用Docker部署SpringBoot项目的详细步骤
  • 使用Docker部署SpringBoot项目的实现方法
  • 利用Dockerfile部署SpringBoot项目的方法
  • Springboot项目打war包docker包找不到resource下静态资源的解决方案
  • 详解springboot项目docker部署实践

centos服务器+docker,从0部署springpoot项目

centos服务器+docker,从0部署springpoot项目

因为阿里的服务器打折没了,所以我就买了一个一年的腾讯云服务器。选择心仪的服务器然后进行购买就行。

在这里插入图片描述

购买之后获取ip和密码

在这里插入图片描述

打开xshell,连接到我们新买的服务器(先输入ip,然后会提示输入用户名密码

在这里插入图片描述

连接成功之后直接在虚拟机上安装docker,这里我看了菜鸟教程里面centos的安装文档

安装成功之后,我首先制作了MysqL5.7的容器。Docker 安装 Mysql 5.7

数据库

拉取镜像

# 搜索 MysqL 镜像           这个感觉挺重要的
$ docker search MysqL

# 下载 MysqL 5.7 镜像
$ docker pull MysqL:5.7

# 复制 MysqL 5.7 生成一个新的镜像,并且命名为MysqL57
$ docker tag MysqL:5.7 MysqL57

# 删除镜像 MysqL 5.7
$ docker rmi MysqL:5.7

# 查看下载镜像
$ docker images



#数据库数据持久化
docker volume ls
docker volume create --name v1
docker volume inspect v1

运行容器

#根据镜像创建容器并且运行
docker run -d -p 3306:3306 -v v1:/var/lib/MysqL -e MysqL_ROOT_PASSWORD=111111 --name MysqL57 MysqL57

#查看当前运行容器
docker ps
#查看没运行的容器
docker ps -a
#删除容器
docker rm MysqL57

这里注意一下防火墙和端口问题,买完服务器之后发现它默认是没有打开的。考虑到安全问题最好是打开防火墙然后打开3306和8080这两个端口。

CentOs防火墙相关命令

CentOs查看和开启端口

然后用Navicat连接一下数据库
新建连接,点击ssh,输入刚刚购买的腾讯云的ip,用户名,密码(用户名应该默认root)

在这里插入图片描述

再点击常规,输入数据库的账号密码再起个名字之后点击连接测试,成功之后点击确定。(注意常规这里的用户名密码是刚刚docker中MysqL的数据库和密码,并且此时MysqL57这个容器必须运行着,可以通过docker ps查看)

在这里插入图片描述


然后数据库配置就结束了

导入springboot项目

打开idea,加入mainClass表明启动类

    <build>
        <plugins>
            <plugin>

                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>

                    <mainClass>com.demo.itcabinet.cabinet.CabinetServiceApplication</mainClass>

                </configuration>
            </plugin>
        </plugins>
    </build>

点击右侧的maven,然后再依次点击clean和package,会生成一个黄色的target文件夹。我们需要复制后缀为.jar的这个文件出来

在这里插入图片描述


编写Dockerfile文件
新建一个txt,复制粘贴以下代码

# 基础镜像使用Java
FROM java:8
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD cabinet_service-0.0.1-SNAPSHOT.jar app.jar
# 运行jar包
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

其中需要把cabinet_service-0.0.1-SNAPSHOT.jar改为你自己刚刚复制的那个.jar文件的名字。

在这里插入图片描述


再把这两个文件放入服务器中,这里我使用了Xftp 7,挺方便。

在这里插入图片描述


在这里插入图片描述

生成镜像

#生成名为cabinet的镜像  别忘了后面的.(点)
docker build -t cabinet .

根据镜像生成容器

docker run -d -p 8080:8080 --name cabinet p_demo1

在这里插入图片描述


如果docker ps发现有个容器一会就没了,使用docker logs p_demo1查看名为p_demo1容器的日志。

没什么问题现在网站就部署好了


记得加上你自己配置的端口就好了。

Centos部署springboot项目war包

Centos部署springboot项目war包

以前都是在虚拟机上部署的,所以没太多感觉,这次部署到云服务器(阿里云),问题有点太多了。

1. jdk安装,以前已经安装好了,这里不再介绍

2. tomcat安装,推荐别太快部署,先看看猫能不能出来,我安装的版本是8.0.53

  注意:不知道为什么netstat lnp|grep 80 查看端口号时,8005端口总是起不来,这里参照网上的方法,将jdk中jre/lib/security/Java.security中参数进行修改

  参数securerandom.source=file:/dev/random 改为 securerandom.source=file:/dev/urandom,这样我们8005端口号总算是起来了

3. 猫能看到了,现在开始部署(提前说一下,我把ROOT删掉了)

  3.1 SpringBoot配置可能需要麻烦一点

    a.修改pom.xml中打包方式<packaging>war</packaging>

    b.然后移除嵌入式tomcat插件

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 移除嵌入式tomcat插件 -->
            <exclusions>
                <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    c.添加servlet-api

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

    d.修改启动类,重写初始化方法

      类似于web.xml的配置方式来启动spring上下文了,在Application类的同级添加一个SpringBootServletInitializer类

/**
 * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
 */
public class SpringBootServletInitializer extends org.springframework.boot.web.support.SpringBootServletInitializer{
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Application启动类
        return builder.sources(BootdoApplication.class);
    }
}

    前期springBoot项目就准备好了

  3.2 我所使用的ide是idea,使用他的maven projects管理,package就可以生成war

  3.3 接着将war包放到tomcat的webapps下

  3.4 进入tomcat的conf下对server.xml进行配置

    解释下标签host和context(我只用到这几个)

    host :

      appName —— 初始值为webapps,存放应用程序的路径

      name —— 初始值为localhost,主机名

      unpackWARS —— 初始值为 true,是否自动解压war包

      autoDeploy —— 初始值为true,设置程序是否自动装载

    context :

      docBase —— 文件路径,可以是绝对路径,也可以是相对路径,相对路径就是相对于appName

      path —— 访问路径 访问格式 http://ip:port/path 

      reloadable —— true 是否自动部署

  然后运行startup.sh就可以了

我们今天的关于docker在centos7上部署springboot项目docker如何部署springboot项目的分享已经告一段落,感谢您的关注,如果您想了解更多关于Centos7部署springboot.jar项目、Centos8.3、docker部署springboot项目实战案例分析、centos服务器+docker,从0部署springpoot项目、Centos部署springboot项目war包的相关信息,请在本站查询。

本文标签: