spring boot docker部署_docker部署java项目

spring boot docker部署_docker部署java项目目录docker介绍安装dockerUbuntu安装dockerCentOS安装docker通过脚本安装创建springboot项目docker介绍Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。docker的核心思想是…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

docker介绍

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

docker的核心思想是通过对应用的封装、分发、部署、运行生命周期进行管理,达到应用组件级别的“一次性封装,到处运行”。这里的应用组件,可以是一个web应用,也可以是一个环境,更可以是一个数据库等等。

安装docker

既然docker这么神奇,那我们如何安装docker呢?我们一起来走一下吧。

Ubuntu安装docker

由于本人的系统是CentOS,所以这里就只展示一下CentOS的安装方式,Ubuntu以及其他系统请自行百度。

CentOS安装docker

docker要求CentOS在7.0以后的版本,如果你的系统版本还在7.0以前,请先升级一下版本在进行安装,同时不支持32位的系统,内核版本至少3.10。

请先确保没有安装过docker,否则有可能会导致安装失败,如果之前安装过,可以尝试直接yum isntall -y docker

1.更新软件源
第一个命令

yum update 

在这里插入图片描述
遇到他输入y,然后回车,看到下面信息表示更新成功:
在这里插入图片描述
第二个命令

yum install -y yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述

2.添加docker稳定版本的yum软件源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

在这里插入图片描述
3.再次更新yum源,并安装docker

yum update

在这里插入图片描述

yum install -y docker-ce

在这里插入图片描述
看到这个页面,标识docker已经安装成功了。
4.安装完成之后启动docker

systemctl start docker

5.重启

systemctl restart docker

6.停止

systemctl stop docker

7.开机自启动

systemctl enable docker

8.查看docker的状态

systemctl status docker

通过脚本安装

除了上面的yum安装,还可以采用shell脚本安装,安装流程如下:

curl -fsSL https://get.docker.com/ | sh

或者

wget -qO- https://get.docker.com/ | sh

拉取java环境

拉取jdk很简单,直接执行一行代码即可,我这里拉取的时java 8的版本。

docker pull java:8

拉取完成之后执行:

docker images

如果出现下面内容,表示拉取成功
在这里插入图片描述

创建springboot项目

1.新建项目
在这里插入图片描述
引入sprint-boot-web的依赖
在这里插入图片描述
新建完成之后的项目结构
在这里插入图片描述
2.引入docker依赖

 <properties>
       <docker.image.prefix>registry.aliyuncs.com/linhuatest</docker.image.prefix>
    </properties>


 <!-- docker插件 -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${ 
   docker.image.prefix}/${ 
   project.artifactId}</imageName>
                    <!--docker文件所在的目录-->
                    <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.新建docker文件
在main目录下新建docker目录,然后在docker目录下创建dockerfile文件,不需要后缀名。
在这里插入图片描述
创建完成之后的工程目录如下:
在这里插入图片描述
4.编辑dockerfile文件

FROM java:8
VOLUME /tmp/tomcat
ADD spring-boot-docker-0.0.1-SNAPSHOT.jar springboot-docker.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/springboot-docker.jar"]

FROM:指定存在的镜像,java:8是我刚刚拉取的镜像,运行的基础。
VOLUME:指向的一个临时文件,用于存储tomcat工作。
ADD:复制文件并且重命名文件。
ENTRYPOINT:初始化配置或者自定义配置。

5.创建测试接口
在这里插入图片描述
TestController内容如下:

package com.ymy.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j 
public class TestController { 
   

    @RequestMapping(value = "/test",method = RequestMethod.GET)
    public String test(){ 
   
        System.out.println("这是控制台日志!");
        log.info("这是输出到文件的日志");
        return   "HELLO-BUG!!!!!!!!!!";
    }
}

在resources目录下创建log4j2.xml文件
主要看这两个参数:
在这里插入图片描述
这里我使用了log4j2的日志,如何配置log4j2的日志,请参考 springboot整合Log4j2(将日志输出到指定文件)

6.编写application.yml配置文件

server:
  port: 9999

到这里springboot项目就创建完成了,我们现在启动一下项目。

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.5.RELEASE)

15:29:19.386 [main] INFO  com.ymy.SpringBootDockerApplication  - Starting SpringBootDockerApplication on LAPTOP-3GLHJRE9 with PID 20652 (D:\springboot\spring-boot-docker\target\classes started by admin in D:\springboot)
15:29:19.395 [main] INFO  com.ymy.SpringBootDockerApplication  - No active profile set, falling back to default profiles: default
15:29:20.183 [main] INFO  org.springframework.boot.web.embedded.tomcat.TomcatWebServer  - Tomcat initialized with port(s): 9999 (http)
15:29:20.200 [main] INFO  org.apache.coyote.http11.Http11NioProtocol  - Initializing ProtocolHandler ["http-nio-9999"]
15:29:20.201 [main] INFO  org.apache.catalina.core.StandardService  - Starting service [Tomcat]
15:29:20.201 [main] INFO  org.apache.catalina.core.StandardEngine  - Starting Servlet engine: [Apache Tomcat/9.0.31]
15:29:20.309 [main] INFO  org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/]  - Initializing Spring embedded WebApplicationContext
15:29:20.309 [main] INFO  org.springframework.web.context.ContextLoader  - Root WebApplicationContext: initialization completed in 881 ms
15:29:20.452 [main] INFO  org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor  - Initializing ExecutorService 'applicationTaskExecutor'
15:29:20.568 [main] INFO  org.apache.coyote.http11.Http11NioProtocol  - Starting ProtocolHandler ["http-nio-9999"]
15:29:20.596 [main] INFO  org.springframework.boot.web.embedded.tomcat.TomcatWebServer  - Tomcat started on port(s): 9999 (http) with context path ''
15:29:20.599 [main] INFO  com.ymy.SpringBootDockerApplication  - Started SpringBootDockerApplication in 1.664 seconds (JVM running for 4.04)

如果看到这个页面表示springboot项目没有问题,现在我们将项目拷贝到服务器中。

打包springboot到docker

在这里插入图片描述
我现在已经将项目拷贝到服务器中,我们现在需要将它打包到docker中,借助maven实现打包,如果还没有安装maven的,请先安装maven,切换到项目的根目录
在这里插入图片描述
执行

mvn clean package docker:build

执行完之后将会看到
在这里插入图片描述
表示打包成功。

执行

docker images

在这里插入图片描述
我们发现docker的镜像中多了一个springboot/spring-boot-docker,没错,这个就是我们的springboot项目,既然镜像已经生成,那么如何使用这个镜像呢?

执行

docker run --name springbooot-docker   -p 9999:9999 -d 4a2

在这里插入图片描述

run:运行的意思
–name: 指定镜像启动的之后的名称
-p: 容器和外部的端口映射 第一个端口:外部 第二个端口:内部
-d: 后台运行 -t:实时运行,窗口关闭,程序结束。
4a2:表示镜像的id(IMAGE ID)前3位,这里的id并不需要输入全称,只需要输入前几个就行,有一个前提:当有很多镜像的时候,前面几个字符就有可能会相同,这个时候就需要多输入几位,直到不相同位置。

启动了镜像之后我怎么直到有没有成功呢?这个时候我们就需要一个命令来查看已经启动的任务

docker ps

在这里插入图片描述
我们发现这里已经出现了我们之前启动的镜像,所以这基本上代表启动成功了,为了验证是否启动成功,我们在浏览器输入测试的接口:ip:9999/test
在这里插入图片描述

docker查看容器的日志

这说明我们已经springboot项目已经启动成功了,到这里docker部署springboot项目差不就结束了,但是你可能还有一个疑问,如果我想看控制台的日志怎么办呢?像我们一般使用java -jar的时候都会生成一个控制台的日志文件,那docker容器中怎么查看控制台日志呢?其实很简单,只需要一行命令即可

docker ps

找到容器的id
在这里插入图片描述
然后执行

docker logs -f --tail=100 ca

在这里插入图片描述
这个时候我们就能看到控制台的日志了,如何我们想看log4j2输出的文件日志呢?

查看log4j2输出问文件日志

还记得我们在log4j2中配置了日志的输出目录了吗?
在这里插入图片描述
没错,就是这个, 我们切换到这个目下
在这里插入图片描述
发现这里生成了三个文件,我们打开info.log

tail -100f info.log

在这里插入图片描述
我们发现并没有输入我们打印的:“这是输出到文件的日志”,难道是我们配置错了问题?不是的,是因为我们找错了位置,真正的文件日志在容器内部,所以我们需要先进入容器内部

docker exec -it ca2cd59fff9b /bin/bash

ca2cd59fff9b:容器id

然后在切换到我们日志的输出路径

cd work/spring-boot-docker

在这里插入图片描述
这里也找到了三个日志文件,我们打印info.log

tail -100f info.log

在这里插入图片描述

这就是我们log4j2输出到文件的日志,到这里docker整合springboot项目就差不多结束了,如果想要退出docker容器可以使用

 exit
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/183520.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月10日 下午3:36
下一篇 2022年10月10日 下午3:36


相关推荐

  • docker部署jenkins安装使用教程_免费docker容器

    docker部署jenkins安装使用教程_免费docker容器前言使用docker安装jenkins环境,jenkins构建的workspace目录默认是在容器里面构建的,如果我们想执行python3的代码,需进容器内部安装python3的环境。进jenki

    2022年7月31日
    8
  • jenkin swindows启动_mac系统下docker 部署jenkin s

    jenkin swindows启动_mac系统下docker 部署jenkin smac 系统下 docker 安装 jenkins 前提需要安装完 docker 在进行以下步骤操作 1 为了方便容器内对配置文件进行修改 需要先创建 Jenkins 挂载目录并授权权限 mkdir Users a docker jenkins homechmod777 Users a docker jenkins home2 使用 dockerpullje jenkins 命令 拉取 Jenki

    2026年3月16日
    2
  • docker离线安装「建议收藏」

    docker离线安装「建议收藏」1.下载Docker二进制文件(离线安装包)下载地址:https://download.docker.com/linux/static/stable/x86_64/本文使用/x86_64/docker-17.12.1-ce.tgz,注意对应操作系统类型。2、通过FTP工具将docker-17.12.1-ce.tgz上传到服务器上3、解压安装包tarzxfdocker-17.12.1-ce.tgz4、将docker相关命令拷贝到/usr/bin,方便直接运行命令sudo

    2026年4月14日
    3
  • 【云原生专题】基于Docker+Neo4j图数据库搭建企业级分布式应用拓扑图

    【云原生专题】基于Docker+Neo4j图数据库搭建企业级分布式应用拓扑图图数据库是 NoSQL 领域中的一种 在处理相关联的大数据方面比关系型数据库天然具有优势 近年来在知识图谱 金融风控 社交关系等场景中发挥了重要的角色功能 同时 图数据库在 AI 领域 天然适合诸如记忆提取 关联推理 归纳探索等场景 成为了人工智能领域不可缺少的部分 Neo4J 是比较通用和常见的图数据库 具有社区版和企业版之分 普通学习使用免费的社区版即可 Neo4J 还提供了一个 Web 访问的可视化执行与查询的界面 类似 ElasticSearc 一样 非常容易上手

    2026年3月16日
    2
  • pycharm + docker 环境创建

    pycharm + docker 环境创建吐个槽 公司不给用自己的笔记本 windows 环境莫名其妙的配置不起来 之前装了个 GPU 驱动 tensorflow 就一直装不上 hanlp 就一直装不上 后来就用 docker 公司服务器就莫名其妙的一直卡一直卡 没办法 只能用 windows docker 都是泪 pycharm 需要用专业版的 配置 docker 的环境步骤参考 https www jetbrains com help

    2026年3月27日
    2
  • 群辉 Docker-x64-17.05.0-0400.spk,用来群晖洗白,安装ddsm使用

    群辉 Docker-x64-17.05.0-0400.spk,用来群晖洗白,安装ddsm使用链接:https://pan.baidu.com/s/1_J5uQTBmEolNT8T_9P6gLQ提取码:jyq8复制这段内容后打开百度网盘手机App,操作更方便哦

    2022年5月1日
    59

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号