斐讯N1-小钢炮Docker中运行SpringBoot应用
斐讯N1-小钢炮Docker中运行SpringBoot应用
介绍
硬件:斐讯N1
系统:小钢炮(Linux)
容器:Docker
依赖环境:JDK、MySQL
目标:运行springboot web应用
安装JDK
因为在Docker中没有找到合适的Jdk,因此需要先安装一个Jdk。考虑到N1是ARM架构,所以需要找一个匹配的JDK版本,我选择的是jdk-8u212-linux-arm64-vfp-hflt.tar.gz
。
下载地址:https://github.com/frekele/oracle-java/releases
将JDK包下载后并使用XFtp工具上传到小钢炮Linux系统中(一般我会放在用户目录)。
将JDK文件解压,执行命令:
tar -zxvf jdk-8u212-linux-arm64-vfp-hflt.tar.gz
解压后是个名为jdk1.8.0_212的文件夹,将此文件夹移到在ARM电脑的
/usr/lib/jvm
目录下,执行命令:mv ./jdk1.8.0_212 /usr/lib/jvm/
如果
/usr/lib
下没有jvm目录,则自己创建。编辑
/etc/profile
环境配置文件,执行命令:vi /etc/profile
在文件底部追加以下内容并保存:
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_212 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH
激活环境配置,执行命令:
source /etc/profile
进入
/usr/lib/jvm/jdk1.8.0_212/bin
目录,为文件增加权限,执行命令:cd /usr/lib/jvm/jdk1.8.0_212/bin & chmod +x *
验证JDK是否已经可用,执行命令:
java -version
此时已经可以运行Java应用,命令:
java -jar xxx.jar
构建Docker镜像-JDK
上面安装JDK的方式与X86环境一致,原则上不利于重复使用。为了以后偷懒,这部分内容会将JDK构建成Docker镜像。
在小钢炮Linux系统上新建一个文件夹,里面新建名为
Dockerfile
的文件(没有文件后缀),内容如下:# Docker image of JDK8 in ARM64 # VERSION 8#基础镜像使用的是OpenJDK官方镜像公用的 FROM buildpack-deps:stretch-scm#作者 MAINTAINER xxx <xxx@qq.com># Default to UTF-8 file.encoding ENV LANG C.UTF-8ENV JAVA_HOME /usr/local/jdk8ENV PATH $JAVA_HOME/bin:$PATHENV JDK_FILE jdk-8u212-linux-arm64-vfp-hflt.tar.gzCOPY $JDK_FILE /usr/local/RUN mkdir -p "$JAVA_HOME"; \tar --extract \--file /usr/local/$JDK_FILE \--directory "$JAVA_HOME" \--strip-components 1 \--no-same-owner; \rm /usr/local/$JDK_FILE
将前面下载的
jdk-8u212-linux-arm64-vfp-hflt.tar.gz
文件复制到Dockerfile
文件所在目录;在
Dockerfile
文件所在目录进行构建,执行命令:docker build -t xxx/arm64jdk:8 .(注意命令的末尾有个小数点,表示当前目录。xxx/arm64jdk:8为image的名称和版本号)
验证效果,执行命令:
docker run --rm xxx/arm64jdk:8 java -version
根据自己的需要,将此镜像上传到仓库中;
可选安装Maven
安装包解压之后是个名为apache-maven-3.6.2的文件夹,将此文件夹放在ARM电脑的
/usr/local
目录下;编辑
/etc/profile
文件,增加以下内容:export MAVEN_HOME=/usr/local/apache-maven-3.6.2 export PATH=$MAVEN_HOME/bin:$PATH
激活配置,执行命令:
source /etc/profile
进入
/usr/local/apache-maven-3.6.2/bin
目录,执行命令:chmod +x ./mvn
验证maven是否已经可用,执行命令:
mvn -version
安装MySQL
安装镜像:
docker pull ibex/debian-mysql-server-5.7
创建本地目录文件(根据具体情况来定,我挂载了移动硬盘):
cd /media/other/mysql/ & mkdir datacd /media/other/mysql/ & vi my.cnf
运行容器:
docker run --name mysql \-d \--restart unless-stopped \-p 3306:3306 \-v /media/其它/mysql/data:/var/lib/mysql \-v /media/其它/mysql/my.cnf:/etc/mysql/conf.d/my.cnf \-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \ibex/debian-mysql-server-5.7:latest
#–restart 重启策略,unless-stopped 和 always 基本一样,只有一个场景 unless-stopped有点特殊,如果容器正常stopped,然后机器重启或docker服务重启,这种情况下容器将不会被restart
#–name 容器名字
#-p 端口映射, 左边为主机端口,右边为docker容器端口
#-d 后台运行
#-v 文件映射从protainer-ui,进入MySQL容器的控制台窗口,执行命令:
看个人习惯,当然也可以用docker exec 命令执行
mysql -uroot
进入MySQL控制台,再执行以下命令:
use mysql; update user set authentication_string = password('12345678') where user = 'root'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '12345678' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '12345678' WITH GRANT OPTION;
验证MySQL是否配置成功,打开Navicat客户端连接MySQL;
打包SpringBoot 镜像
使用maven将SpringBoot应用打成jar包(主意区分运行环境,如dev、prod),执行命令:
mvn clean; mvn package;
编写Dockerfile,内容如下:
# Docker image for springboot file run # VERSION 0.0.1 # Author: zos # 基础镜像使用java FROM xxx/arm64jdk:8 # 作者 MAINTAINER xxx <xxx@qq.com> # VOLUME 指定了临时文件目录为/tmp。 # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp VOLUME /tmp # 将jar包添加到容器中并更名为app.jar(myapp.jar为步骤一打的jar包) ADD myapp.jar app.jar # 运行jar包 RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-jar","/app.jar"]
上传到小钢炮Linux系统任意目录,需要将Dckerfile和jar包放置在同一目录下;
将jar包构建成docker镜像,执行命令:
docker build -t myapp:v1.0 . (注意命令的末尾有个小数点,表示当前目录。myapp:v1.0为image的名称和版本号)
运行Springboot容器,执行命令:
docker run -p 10086:10086 -d --restart=always --name myapp -v /etc/timezone:/etc/timezone myapp:v1.0
#–restart 重启策略,always
#–name 容器名字
#-p 端口映射, 左边为主机端口,右边为docker容器端口
#-d 后台运行
#-v /etc/timezone:/etc/timezone 同步系统时间验证SpringBoot是否部署成功,通过访问小钢炮Linux系统的ip+步骤5中的端口即可访问。
补充,如果你的SpringBoot应用需要连接MqSQL,可以在SpringBoot应用配置文件中
参考文章:ARM架构下的Docker环境,OpenJDK官方没有8版本镜像,如何完美解决?https://blog.csdn.net/boling_cavalry/article/details/101855126#tt_daymode=1&tt_font=m?tt_from=weixin&utm_source=weixin&utm_medium=toutiao_ios&utm_campaign=client_share&wxshare_count=1
斐讯N1-小钢炮Docker中运行SpringBoot应用相关推荐
- n1运行linux,斐讯N1折腾记:运行 Linux 及优化
此教程同样适用于斐讯 P1 咳咳咳,上篇教程教大家给斐讯 N1 降级并且刷了官改系统,可以当作一个电视盒子和下载机来使用. 有些小伙伴可能不想把它当作电视盒子,就想把它当作 NAS 或者是服务器,但是 ...
- armbian n1 桌面_斐讯N1折腾记:运行 Linux 及优化 | 米V米
最后更新时间:2019年03月25日 此教程同样适用于斐讯 P1 咳咳咳,上篇教程教大家给斐讯 N1 降级并且刷了官改系统,可以当作一个电视盒子和下载机来使用. 有些小伙伴可能不想把它当作电视盒子,就 ...
- 在Docker中运行SpringBoot程序
原文地址: itweknow.cn/detail?id=4- 微服务现在在互联网公司可谓非常流行了,之前找工作的的时候很多HR电话约面试的时候都会问对微服务是否有过接触.而微服务和Docker可以非常 ...
- Docker中运行Springboot jar时的变量传递
Docker可以把我们的运行环境打包,然后我们只要run就可以了.大部分hello world都是这么写的.但都缺少了实际应用环节.以springboot为例,hello world的Dockerfi ...
- 【折腾】斐讯N1 安装 Docker + GUI
Docker 安装 apt update# 自动安装 1 curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh - ...
- 斐讯n1 linux连接wifi,斐讯 N1 部署 Docker 和 OpenWRT,并利用 Hostapd 开启 Wi-Fi 热点
刷入 Armbian 的 N1 可以通过安装 Docker 做很多事情,部署 OpenWRT 路由系统就是其中之一,同时利用 Hostapd 更可以开启 Wi-Fi 热点,方便作为一台便携路由使用. ...
- 斐讯N1 小钢炮系统配置 FRP 内网穿透
尝试做一个私人图书馆,需要外网访问,因此选择系统自带frp. 找到了免费FRP服务,https://freefrp.net,良心网站给出了几个地址,我选择第一个. 永久免费服务器 frp.freefr ...
- n1运行linux,斐讯 N1 运行 ArchLinuxARM
酷酷之前教大家斐讯 N1 如何运行 Linux,当时用的发行版是 Armbian,由于它有镜像文件,操作起来也比较简单. 不过 Armbian 只有 Debian 和 Ubuntu 两个版本可以选择, ...
- 斐讯n1安装centos7+docker openwrt
斐讯n1安装centos7+docker openwrt 首先声明,我的n1是降级过的,系统默认usb启动优先级大于emmc,所以可以直接将镜像写入u盘,通过u盘启动系统,同时通过脚本将系统写入emm ...
最新文章
- .Net程序员学用Oracle系列(10):系统函数(中)
- Problem 64 如何设置Linux系统内存回收的阀值?
- 【转帖】漫话C++0x(四) —- function, bind和lambda
- net 快速打印日志
- 计算机辅助分析及应用论文,故障树计算机辅助分析及应用研究-机械制造及自动化专业论文.docx...
- linux下编译httpd,Linux下编译安装Apache httpd 2.4
- eclipse索引4超出范围_Python内置的4个重要基本数据结构:列表、元组、字典和集合
- PHP 会话 线程 进程,php进程后台调用(多线程/进程)
- 申通快递:1月快递服务业务收入25.65亿元 同比增长21.27%
- java join字符串_Java字符串join()
- mysql2005错误码_SQL Server2005 常见错误及解决方案
- 你的计算机无法连接到远程计算机,因为远程桌面网关服务器暂时不可用。
- 中国工业管道过滤器市场深度研究分析报告
- Gson踩坑笔记:为什么对象的构造方法没有被执行?
- 对XP系统中Autorun.inf Autorun.exe以及RECYCLER文件夹的认识
- 性能优化:Android App启动速度优化
- 笔记本电脑购买指南与建议-知识点介绍
- 《学会提问》02| 论题和论证
- antd-mobile InfiniteScroll 无限滚动
- mysql tcmalloc_tcmalloc优化mysql性能测试