树莓派4B arm64 搭建 docker+drone+gitea
树莓派4B arm64 搭建 docker+drone+gitea
记录时间: 2023年02月10日
树莓派烧录
如何用树莓派搭建一台永久运行的个人服务器?
https://mp.weixin.qq.com/s?__biz=MzI5NjA0ODkwNA==&mid=2651847658&idx=1&sn=267a1257b43d4a76f2a081ed157b77f9&chksm=f7b11b8dc0c6929b768fb1314c9dbcb75a5079ac24080294102dc72b349944750d8b32916f42&scene=27
树莓派安装官方系统,无桌面版本,最后发现自己是小丑!!!-哔哩哔哩
https://b23.tv/6xC0kiQ
- 树莓派官网:https://www.raspberrypi.com/
- 下载安装烧录工具:Raspberry Pi OS
- https://downloads.raspberrypi.org/imager/imager_latest.exe
- 下载Pi OS64位精简镜像:Raspberry Pi OS (64-bit) Raspberry Pi OS Lite
- https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2022-09-26/2022-09-22-raspios-bullseye-arm64-lite.img.xz
- 烧录完成后在boot分区加入文件
- ssh
- 空白文件
- userconf.txt
- 使用openSSL(openssl passwd -6)生成密码(raspberry)
- wpa_supplicant.conf
- 不能是windows的换行符
- ssh
- 插入内存卡启动, 使用Xshell连接树莓派
- 地址:raspberrypi
户名:pi
密码:raspberry
- 地址:raspberrypi
更换国内镜像站
清华大学开源软件镜像站
https://mirrors.tuna.tsinghua.edu.cn/help/raspbian/
# aarch64 用户:编辑 `/etc/apt/sources.list` 文件,用以下内容取代:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free# 编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
deb https://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ bullseye main
更新软件源列表
sudo apt-get update
(可选)更新升级以安装软件包,这个过程耗时较长
sudo apt-get upgrade
启用树莓派FTP传输协议
#FTP Server安装
sudo apt-get install vsftpd
#使用指令启动FTP服务:
sudo service vsftpd start
#允许树莓派写入权限:
sudo nano /etc/vsftpd.conf
#找到 write_enable=YES 的,将前面的 # 号删除即可
#删除注释符号后,按 Ctrl + X 保存,输入 Y 确认
修改时区
sudo dpkg-reconfigure tzdata
#找到亚洲 Asia,然后选择 shanghai 就可以了。
开机自启 ssh
sudo raspi-config
#进入选择找到 interfacing option 选择,然后找到 ssh,按回车使能 enable 就可以了。
docker相关软件安装
https://www.bilibili.com/read/cv17137378
安装docker
#可以直接使用脚本安装:
sudo curl -sSL https://get.docker.com | sh
#也可以使用国内 daocloud 一键安装命令:
sudo curl -sSL https://get.daocloud.io/docker | sh
#把 pi 用户添加到 docker 用户组,这样在执行 docker 命令时就不需要每次都带 sudo
sudo groupadd docker
sudo gpasswd -a $USER docker
newgrp docker#安装完毕后可以使用如下命令检查是否安装成功:
docker -v
#设置开机自启动:
sudo systemctl enable docker
配置阿里云镜像加速
Docker必备六大国内镜像
https://www.cnblogs.com/boonya/p/15954368.html
#配置阿里云镜像加速
#创建文件
sudo mkdir -p /etc/docker
#写入配置
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://lz2nib3q.mirror.aliyuncs.com"]
}
EOF
#docker重启
sudo systemctl daemon-reload
sudo systemctl restart docker
#检测docker配置查看是否配置成功
sudo docker info#我的阿里加速链接
#https://ma4s1a5t.mirror.aliyuncs.com
常用命令
#查看 Docker 版本
sudo docker -v
sudo docker pull 仓库/镜像:版本(留空的话默认为 latest)
sudo docker run 加参数,用来创建容器
#查看运行容器
sudo docker ps
#查看所有下载的镜像
sudo docker images
#docker重启
sudo systemctl daemon-reload
sudo systemctl restart docker
#检测docker配置
sudo docker info
#关闭docker服务
systemctl stop docker.socket
systemctl stop docker
安装 portainer - docker 管理图形化
官方文档
https://docs.portainer.io/v/ce-2.9/start/install/server/docker/linux
#下载 Docker 图形化界面 portainer 的镜像
sudo docker pull portainer/portainer-ce
#创建 portainer 数据卷
sudo docker volume create portainer_data
#运行 portainer
sudo docker run -d -p 9000:9000 \
--name portainer \
--restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce
docker-compose安装
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-aarch64" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-composedocker-compose -v
其他
数据卷
两个容器通过数据卷来数据共享
#创建数据卷
docker volume create my-vol
#数据卷列表
docker volume ls
#查看数据卷具体信息
docker volume inspect my-vol
#删除数据卷
docker volume rm my-vol
#清除无主的数据卷
docker volume prune#启动一个容器并挂载一个数据卷到容器的/webapp目录(两种方式:)
docker run -d -P --name nginx -v my-vol:/webapp nginx
docker run -d -P --name nginx --mount source=my-vol,target=/webapp nginx
#如果本地数据卷或者本地目录尚未创建,-v命令则会自动创建,--mount则会报错
#如果是容器里的目录不存在,两者都会自动创建
gitea自部署Git库
小小树莓派干大事-自部署Git库(一)
https://defloop.com/xiao-xiao-shu-mei-pai-gan-da-shi-zi-bu-shu-gitku-er/
docker部署gitea
https://zhuanlan.zhihu.com/p/563413410
# 然后拉取镜像
sudo docker pull gitea/gitea:latest
# 运行容器
sudo docker run -itd \
--privileged=true \
--restart=always \
--name=gitea \
-p 3022:22 \
-p 3000:3000 \
-v /home/docker/gitea/data:/data \
gitea/gitea:latest
访问地址: http://192.168.1.6:3000/
安装界面修改参数
#服务器域名
192.168.1.6:3000
#SSH服务端口
3022
#http服务端口
3000
Drone(基于Gitea)
如何在 Raspberry Pi 上设置 Drone CI(以及为什么不应该)
https://devpress.csdn.net/cloudnative/62fb70c9c6770329308000a4.html#devmenu3
轻量级CI/CD自动构建平台Gitea+Drone保姆级实践教程
https://huaweicloud.csdn.net/63311ad4d3efff3090b522e6.html
【Tools】Drone + Gitee:以SpringBoot项目为例,实现自动化软件构建和测试,CI/CD 持续集成/持续部署
https://blog.csdn.net/weixin_42029283/article/details/128658518
在gitea中创建OAuth应用
- 重定向URI填写: http://192.168.1.6:20080/login
- 记下CLIENT_ID与CLIENT_SECRET
安装drone-server
# 下载Drone-server镜像
sudo docker pull drone/drone:latest
# 开启debug
# --env=DRONE_LOGS_DEBUG=true \
# 运行Drone-server
sudo docker run --privileged=true \--volume=/home/docker/drone-server/data:/data \--env=DRONE_GITEA_SERVER=http://192.168.1.6:3000 \--env=DRONE_GITEA_CLIENT_ID=ec2a1045-4b88-4a4e-a290-f061bc4e2356 \--env=DRONE_GITEA_CLIENT_SECRET=7WAfS57DtEW2NmdVwIk1rfkns02LxQKZWp4F5StFZaJB \--env=DRONE_RPC_SECRET=dc3f3edea46c3e486621f375251aea58 \--env=DRONE_SERVER_HOST=192.168.1.6:20080 \--env=DRONE_SERVER_PROTO=http \--env=DRONE_USER_CREATE=username:bxuits,admin:true \--publish=20080:80 \--publish=20443:443 \--restart=always \--detach=true \--env=TZ=Asia/Shanghai \--name=drone-server \drone/drone:latest
安装drone-runner-docker
# 下载Drone-runner-docker镜像
sudo docker pull drone/drone-runner-docker:latest
# 运行drone-runner-docker
sudo docker run --detach --privileged=true \--volume=/var/run/docker.sock:/var/run/docker.sock \--env=DRONE_RPC_PROTO=http \--env=DRONE_RPC_HOST=192.168.1.6:20080 \--env=DRONE_RPC_SECRET=dc3f3edea46c3e486621f375251aea58\--env=DRONE_RUNNER_CAPACITY=1 \--env=DRONE_RUNNER_NAME=drone-runner-docker \--env=DRONE_UI_USERNAME=root \--env=DRONE_UI_PASSWORD=root \--publish=23000:3000 \--restart=always \--name=drone-runner-docker \--env=TZ=Asia/Shanghai \drone/drone-runner-docker:latest
nginx安装
https://blog.csdn.net/weixin_46244732/article/details/114315708
#拉取镜像
sudo docker pull nginx:latest
#先启动
sudo docker run --name nginx -d \
-p 80:80 \
nginx:latest
#复制容器配置文件
sudo mkdir /home/docker/nginx
sudo docker cp nginx:/etc/nginx/nginx.conf /home/docker/nginx/nginx.conf
sudo docker cp nginx:/etc/nginx/conf.d /home/docker/nginx/conf.d
sudo docker cp nginx:/usr/share/nginx/html /home/docker/nginx/html
停止并移除容器
sudo docker stop nginx
sudo docker rm nginx
再次启动容器并作目录挂载
sudo docker run --name nginx -d --privileged=true \
-v /home/docker/common-data:/home/docker/common-data \
-v /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/docker/nginx/conf.d:/etc/nginx/conf.d \
-v /home/docker/nginx/html:/usr/share/nginx/html \
-v /etc/localtime:/etc/localtime \
-e TZ="Asia/Shanghai" \
-p 80:80 \
--restart=always \
nginx:latest
nginx 读取文件配置
#打开
sudo nano /home/docker/nginx/conf.d/default.conf
#添加location /release {root /home/docker/common-data;autoindex on;}
#重启后访问
http://192.168.1.6/release/
.drone.yml配置
【Tools】Drone + Gitee:以SpringBoot项目为例,实现自动化软件构建和测试,CI/CD 持续集成/持续部署
https://blog.csdn.net/weixin_42029283/article/details/128658518
kind: pipeline # kind 属性定义了对象的种类。此示例定义了一个管道对象。
type: docker # type 属性定义管道的类型。此示例定义了一个 Docker 管道,其中每个管道步骤都在 Docker 容器内执行。
name: HBuilderXSsq # name 属性定义了管道的名称。您可以为您的项目定义一个或多个管道
platform:os: linuxarch: arm64steps: # 步骤部分定义了一系列串行执行的管道步骤。如果管道中的任何步骤失败,管道将立即退出- name: start # name 属性定义管道步骤的名称image: alpine:latest # image 属性定义了一个执行 shell 命令的 Docker 镜像。您可以使用来自任何 DockerHub 中的任何 Docker镜像。volumes: # 将容器内目录挂载到宿主机,仓库需要开启Trusted设置- name: common-datapath: /home/docker/common-data # 将应用打包好的Jar和执行脚本挂载出来commands: # commands 属性将在 Docker 容器内执行的 shell 命令列表定义为容器入口点。如果任何命令返回非零退出代码,则管道步骤将失败。- ls /home/docker/common-data- echo 删除release目录- rm -rf /home/docker/common-data/release- echo 创建release目录- mkdir -p /home/docker/common-data/release- echo 复制release目录- cp -r ssq/unpackage/release/* /home/docker/common-data/release/
volumes: # 定义流水线挂载目录,用于共享数据- name: common-datahost:path: /home/docker/common-data # 从宿主机中挂载的目录
相关文章:
树莓派4B arm64 搭建 docker+drone+gitea
树莓派4B arm64 搭建 dockerdronegitea 记录时间: 2023年02月10日 树莓派烧录 如何用树莓派搭建一台永久运行的个人服务器? https://mp.weixin.qq.com/s?__bizMzI5NjA0ODkwNA&mid2651847658&idx1&sn267a1257b43d4a76f2a081ed157b77f9&chksmf7b11…...

Java的JDBC编程
目录 1. 打开IDEA,新建Project 2. 引入依赖 (1)下载驱动包 (2)将驱动包导入Project 3. 编写代码 (1)创建数据源 (2)让代码和数据库服务器建立联系 (3&…...
CSS:块格式化上下文(BFC)
块格式化上下文是块级盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。 块格式化上下文(BFC)的创建 满足以下条件将创建块格式化上下文: 根元素()浮动元素(float 值不为 none)绝对定位元素…...

paddle表情识别部署
表情识别模块1.环境部署1.1同样采用fastDeploy库1.2相关模型2.封装成静态库2.1参考[百度Paddle中PP-Mattingv2的部署并将之封装并调用一个C静态库](https://blog.csdn.net/weixin_43564060/article/details/128882099)2.2项目依赖添加2.3生成成功3.test3.1创建emotion_test项目…...

Python-第五天 Python函数
Python-第五天 Python函数一、函数介绍1. 什么事函数二、函数的定义1.函数的定义:2.案例三、函数的参数1.函数的传入参数2.案例升级四、函数的返回值1.什么是返回值2.返回值的语法3.None类型4.None类型的应用场景五、函数说明文档1.函数的说明文档2.在PyCharm中查看…...

【Python学习笔记】28.Python3 错误和异常
前言 作为 Python 初学者,在刚学习 Python 编程时,经常会看到一些报错信息,在前面我们没有提及,这章节我们会专门介绍。 Python3 错误和异常 Python 有两种错误很容易辨认:语法错误和异常。 Python assert…...
SQLServer 迁移到 MySQL 工具对比
我之所以会写这篇对比文章,是因为公司新产品研发真实经历过这个痛苦过程(传统基于 SQL Server开发的C/S 产品转为 MySQL云产品)。首次需要数据转换是测试环节,当时为了快速验证新研发云产品性能与结果准确性(算法类&am…...
分析finebi5.x仪表板组件获取数据过程(数据是数据集或者sql的)
首先仪表板的公共连接类似:http://localhost:37799/webroot/decision/link/Bo6B 当我们访问这个连接时,会来到FineLinkAction的getShareReport方法。 public String getShareReport(HttpServletRequest req, HttpServletResponse res, @FinePathVariable("linkId"…...

设计模式--适配器模式 Adapter Pattern
设计模式--适配器模式 Adapter Pattern适配器模式 Adapter Pattern1.1 基本介绍1.2 工作原理类适配器模式对象适配器模式接口适配器模式小结适配器模式 Adapter Pattern 1.1 基本介绍 (1)适配器模式将某个类的接口转换成为客户端期望的另一个接口表示&…...
PVE虚拟机篇-rest api
rest api官方介绍 Proxmox VE API rest api文档 rest api文档 rest api token 调用pve rest api ,有两种认证方式 Ticket Cookie Ticket Cookie的方式是最为推荐的,获取的方式为,通过post请求,发送用户名和密码到pve的server端获取tok…...
2022-2025学年面向中小学生的白名单全国性竞赛活动清单及官网地址链接
**资料来源:爬虫爬取。** 教育部办公厅 工业和信息化部办公厅关于公布 首批特色化示范性软件学院名单的通知 教育部办公厅 工业和信息化部办公厅关于公布首批特色化示范性软件学院名单的通知 - 中华人民共和国教育部政府门户网站 教育部办公厅关于2022-2025学年面向中小学生…...

Python 高级编程之生成器与协程进阶(五)
文章目录一、概述二、生成器1)生成器和迭代器的区别2)生成器创建方式1、通过生成器函数创建2、通过生成器表达式创建3)生成器表达式4)yield关键字5)生成器函数6)return 和 yield 异同7)yield的使…...

Django框架之视图和URL
视图和URL 站点管理页面做好了, 接下来就要做公共访问的页面了.对于Django的设计框架MVT. 用户在URL中请求的是视图.视图接收请求后进行处理.并将处理的结果返回给请求者.使用视图时需要进行两步操作 1.定义视图2.配置URLconf 1. 定义视图 视图就是一个Python函数,…...

Python 的Tkinter包系列之七:好例子补充2
Python 的Tkinter包系列之七:好例子补充2 英汉字典(使用文本文件记录英语单词和解释)、简单的通信录(使用SQLite数据库记录人员信息) 一、tkinter编写英汉字典 先看效果图: 词典文件是一个文本文件&…...
每日一练-等差数列
等差数列🍀题目描述🌿解题思路🌸Python源码📧Summary📆Date: 2023年2月10日 🎬Author: 小 y 同 学 📃Classify: 蓝桥杯每日一练 🔖Language: Python 🍀题目描述 题意 …...

使用动态参数构建CUDA图
文章目录使用动态参数构建CUDA图使用显式 API 调用构建 CUDA 图使用流捕获构建 CUDA 图组合方法执行结果总结使用动态参数构建CUDA图 自从在 CUDA 10 以来,CUDA Graphs 已被用于各种应用程序。 上图将一组 CUDA 内核和其他 CUDA 操作组合在一起,并使用指…...
在Fortran中调用Python教程
前言Python是机器学习领域不断增长的通用语言。拥有一些非常棒的工具包,比如scikit-learn,tensorflow和pytorch。气候模式通常是使用Fortran实现的。那么我们应该将基于Python的机器学习迁移到Fortran模型中吗?数据科学领域可能会利用HTTP AP…...

04-PS人像磨皮方法
1.高斯模糊磨皮 这种方法的原理就是建立一个将原图高斯模糊后图层, 然后用蒙版加画笔或者历史画笔工具将需要磨皮的地方涂抹出来, 通过图层透明度, 画笔流量等参数来控制磨皮程度 1.新建图层(命名为了高斯模糊磨皮), 混合模式设置为正常, 然后选择高斯模糊, 模糊数值设置到看…...

nginx反向代理+负载均衡上传webshell重难点+apache漏洞
nginx反向代理 nginx 负载均衡 负载均衡的策略 1、轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB… upstream mysvr { server 192.168.137.131; server 192.168.137.136; }2、weight:跟据配置…...
transition组件的使用
<template><button click"flag !flag">切换</button><transition name"fade"><div v-if"flag" class"box"></div></transition> </template><script setup lang"ts"&g…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...

Razor编程中@Html的方法使用大全
文章目录 1. 基础HTML辅助方法1.1 Html.ActionLink()1.2 Html.RouteLink()1.3 Html.Display() / Html.DisplayFor()1.4 Html.Editor() / Html.EditorFor()1.5 Html.Label() / Html.LabelFor()1.6 Html.TextBox() / Html.TextBoxFor() 2. 表单相关辅助方法2.1 Html.BeginForm() …...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...