小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

Docker部署spring boot项目

# docker,docker,spring boot,java 额外说明

收录于:17天前

部署docker时,首先要保证一般部署可以访问。

docker命令部署spring boot项目

目前主流的Java框架是spring,软件包是jar包。只需要搭建一个基于jar的容器环境即可。打包成jar后,只需要jvm即可运行,因此需要使用jdk作为镜像来构建容器。

  1. 根据命令搭建jdk环境

拉取openjdk镜像:docker pull openjdk:8

在这里插入图片描述

在这里插入图片描述

  • 上传Web文件,启动容器和Web服务

在这里插入图片描述

在这里插入图片描述

sudo docker run -id --name=springboot1 -p 8080:8080 -v /home/master/java:/root/www openjdk:8构建容器命令。

如上图所设计使用构建容器命令,创建了一个伪终端,终端编号是唯一的,新建一个终端使用docker ps查看容器状态。共享文件时需要绝对路径

由于构建的容器映射了共享文件夹,因此容器和主机将自动同步。

将文件移至共享文件夹

在这里插入图片描述
容器的共享文件夹自动同步了主机共享文件夹的内容,如下图:
在这里插入图片描述

启动的容器目录下存在jar文件,在容器终端使用命令行启动即可。
在这里插入图片描述
在这里插入图片描述

外部浏览器成功访问web,并且可以部署jar,至此docker容器构建成功。

在这里插入图片描述
启动成功后直接断开ssh连接即终端容器也继续在后台运行。

使用sudo docker exec -it [container_name] /bin/bash进入容器内部。/bin/bash时linux的交互式终端。一定要有-it表示创建一个伪终端。

-i表示创建交互式容器
-t表示生成一个伪终端

在这里插入图片描述

从上图可以看到,openjdk实际上是526MB。这是因为图像是一个分层系统。 openjdk底层还使用了其他镜像。软件工具包是建立在操作系统之上的,所以jdk也需要建立在操作系统之上。因此,openjdk的镜像分层如下:

在这里插入图片描述

在这里插入图片描述

容器是面向操作系统的,所以操作系统是容器的底层,镜像是一层层构建的。 dockerhub中央仓库提供了很多已完成的镜像,帮助用户省略一步一步的构建过程。

拉取的opennjdk还包含底层镜像,因此变得非常大。

dockerfile构建镜像并部署spring boot项目

编写dockerfile文件vim dockerfile-jdk

在这里插入图片描述

# 构建镜像
FROM openjdk:8
# 维护者西信息
MAINTAINER xiaoux@example.com
# 将主机文件复制到容器目录
ADD ./springboottest-0.0.1-SNAPSHOT.jar /root/www/app.jar
# 端口映射
EXPOSE 8080  # 起一个声明作用并不会实际映射,需要docker run -p映射
# 容器内运行命令
CMD java -jar /root/www/app.jar

sudo docker build -f ./dockerfile-jdk8 -t app .命令基于docckerfile构建容器。

-f执行dockerfile位置
-t给镜像起别名
.指定当前目录

在这里插入图片描述

docker minages查看构建的镜像

在这里插入图片描述

docker run命令直接构建并启动容器。dockerfile的cmd命令会直接当前docker run的启动命令执行。

也就是说直接将dockerfile中配置的参数作为docker run的启动参数命令。由于配置文件中配置了映射的端口、服务启动命令和共享文件夹,所以这里直接docker run镜像名称即可。 docker run的参数命令会覆盖配置文件的命令。

通过以下命令启动容器,如图

docker run -it -v $pwd:/root/www -p 8080:8080 app

在这里插入图片描述

使用dockerfile的便利性:

  1. 不再需要拉取镜像、配置分层镜像、配置共享文件夹等一系列步骤。
  2. 直接根据dockerfile文件通过docker build来构建镜像非常方便。 Docker run 可以非常方便的运行容器,并且避免了镜像版本冲突的问题。
  3. 提高了可重用性,任何开发者通过dockerfile构建的镜像都是完全相同的。
  4. 省略了docker run后的一堆参数,方便编写。

在这里插入图片描述

当构建镜像并通过dockerfile启动容器时,必须配置端口和共享文件夹。

. . .

相关推荐

额外说明

Java面向对象篇:封装、继承、多态

文章目录 1. 类和对象 1.1 类和对象的理解 1.2 类的定义 1.3 对象的使用 1.4 学生对象-练习 2. 对象内存图 2.1 单个对象内存图 2.2 多个对象内存图 2.3 多个对象指向相同内存图 3. 成员变量和局部变量 3.1 成员变量和

额外说明

[解读]阿里巴巴MySQL数据库规范

大家好,我是只谈技术不剪发的 Tony 老师。 本文是个人对阿里巴巴集团《JAVA开发手册》(嵩山版)中关于 MySQL 数据库规约的理解,如有异议,实属正常。 (一) 建表规约 【强制】 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类

额外说明

EnumSerial\EnumSerial.cpp(275): 错误 C2664: 'RegOpenKeyExW': 无法将参数 2 从 'const char [5]' 转换为 'LPCWSTR'

EnumSerial\EnumSerial.cpp(275): error C2664: “RegOpenKeyExW”: 不能将参数 2 从“const char [5]”转换为“LPCWSTR” 改为

额外说明

Java技术栈&&解决方案

1、Java 发展 Bug 故障,程序错误,缺陷 ; 虫子; 小昆虫 市场占有率 最优秀 语言之一 发明 1990年 sun公司 詹姆斯·高斯林 等人 Green 项目 ----->电视机顶盒 应用 注册 Oak语言 —重名了—>Java 30多岁 20

额外说明

Unity中UI组件对Shader调色

文章目录 前言 一、原理 在Shader中直接暴露的Color属性,不会与UI的Image组件中的Color形成属性绑定。因为UI的Image组件中更改的颜色是顶点颜色,如果需要在修改组件中的颜色时,使Shader中的颜色也同时改变。那么就需要在应用程序

额外说明

Systick 延时函数详解

void delay_init(u8 SYSCLK) { SysTick->CTRL&=0xfffffffb; fac_us=SYSCLK/8; fac_ms=(u16)fac_us*1000; } Systick主要的作用就是拿来计时,其原理和应用简述

额外说明

大漠里的一碗泉

        说起这个葫芦瓢子,是在一些摄友中听说过她的美丽,据说是搞航拍的人发现她的,在天上看就像是一个大葫芦掉在沙漠里了,她位于农二师33团所属的塔克拉玛干沙漠中,我们为了找到她颇费一番周折,先是四驱大越野车在河道的浮土中受困,搅起漫天的沙尘,车,

额外说明

Vue相关知识

Vue学习相关知识 * Vue菜鸟教程 * * 从安装node js到构建一个vue并启动它 *

额外说明

[TQLCTF 2022]simple_bypass

文章目录 涉及知识点 解题过程 涉及知识点 无数字字母RCE 自增马构造 文件包含读取源码 解题过程 打开题目,随便注册一个用户为admin 登陆进去后,一眼发现杰哥图片有线索 我们F12看一下如何请求的 在这里发现可能存在文件包含漏洞 我们尝试读取下源

额外说明

程序缺少xinput9_1_0.dll文件怎么解决?

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或者损坏了,这时你只需下载这个xinput9_1_0.dll文件进行安装(前提是找到适合的版

ads via 小工具