CentOS系统环境搭建(九)——centos系统下使用docker部署项目
centos系统环境搭建专栏🔗点击跳转
关于Docker-compose安装请看CentOS系统环境搭建(三)——Centos7安装Docker&Docker Compose,该文章同样收录于centos系统环境搭建专栏。
Centos7部署项目
- 采用前后端分离的形式部署。
- 使用Docker运行项目。
- 使用Docker Compose创建项目容器。
- 使用git管理项目的更新。
文章目录
- Centos7部署项目
- Centos7安装git
- Centos7从github拉取代码
- 配置git
- 配置用于提交代码的用户名
- 配置用户邮箱
- 生成公钥
- 效果如下
- github添加SSH key
- 打开你的GitHub
- 获取ssh key公钥内容
- 验证
- 拉取项目
- 新建空白文件夹
- 拉取项目
- 使用Docker Compose创建项目容器
- 创建docker-compose.yaml
- 启动项目
- 配置前端
- 新建空白文件夹
- 拉取前端代码
- 创建nginx.conf
- 创建docker-compose.yaml
- 启动服务
- 查看是否在运行
Centos7安装git
安装
yum install git
验证
git --version
Centos7从github拉取代码
配置git
配置用于提交代码的用户名
git config --global user.name "Your Name"
配置用户邮箱
git config --global user.email "Your email"
生成公钥
ssh-keygen -t rsa -C "Your email"
效果如下
ssh-keygen -t rsa -C "你的email"
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:一串密码 email
The key's randomart image is:
密码图
可知,Your public key has been saved in /root/.ssh/id_rsa.pub.
这里就是你密钥的位置。
[root@VM-4-17-centos srv]# cd /root/.ssh/
[root@VM-4-17-centos .ssh]# ll
total 8
-rw------- 1 root root 1679 Jun 9 14:57 id_rsa
-rw-r--r-- 1 root root 400 Jun 9 14:57 id_rsa.pub
github添加SSH key
打开你的GitHub

获取ssh key公钥内容
id_rsa.pub就是你的公钥,参考上面步骤,进入对应文件夹下查看公钥。
cat /root/.ssh/id_rsa.pub

将它复制到github。


验证
ssh -T git@github.com
成功后如下所示。
[root@VM-4-17-centos .ssh]# ssh -T git@github.com
Hi PerCheung! You've successfully authenticated, but GitHub does not provide shell access.
拉取项目
新建空白文件夹
mkdir /srv/tencent
mkdir /srv/tencent/server
我将会把github代码拉取到/srv/tencent/server
拉取项目
复制ssh地址

进入/srv/tencent/server执行下面的命令
git clone git@github.com:PerCheung/tencent.git
效果如下
[root@VM-4-17-centos server]# git clone git@github.com:PerCheung/tencent.git
Cloning into 'tencent'...
remote: Enumerating objects: 352, done.
remote: Counting objects: 100% (352/352), done.
remote: Compressing objects: 100% (210/210), done.
remote: Total 352 (delta 136), reused 289 (delta 77), pack-reused 0
Receiving objects: 100% (352/352), 111.94 KiB | 0 bytes/s, done.
Resolving deltas: 100% (136/136), done.
[root@VM-4-17-centos server]# ll
total 4
drwxr-xr-x 5 root root 4096 Jun 9 15:31 tencent
使用Docker Compose创建项目容器
创建docker-compose.yaml
/srv/tencent/server下创建docker-compose.yaml
# 指定 Docker Compose 文件版本
version: '3'# 定义服务
services:# 定义名为 tencent 的服务tencent:# 自定义容器名container_name: tencent_server# 始终重启该容器restart: always# 使用当前目录下的 Dockerfile 构建容器镜像build: ./tencent# 赋予容器更高的权限,以便容器内的进程可以拥有更高的权限privileged: true# 容器内的工作目录working_dir: /tencent# 将主机的 ~/.m2 目录映射到容器内的 /root/.m2 目录,以便容器内的应用程序可以访问主机上的 Maven 仓库volumes:- ./tencent:/tencent- ~/.m2:/root/.m2# 将容器的网络模式设置为主机模式,使得容器内的应用程序可以直接使用主机的网络资源,提高应用程序的网络性能network_mode: host# 容器启动时执行的命令,清除 Maven 缓存并启动 Spring Boot 应用程序command: mvn clean spring-boot:run
启动项目
docker-compose up
之后将会下载大量jar包到你的本地maven仓库。

成功后有如下信息。

这证明项目可以顺利启动,使用ctrl+C结束,换这个命令运行我们的项目。
docker-compose up -d
可以看到项目已经正在运行。

通过网页即可访问。

配置前端
同理,以上的步骤就是在配置后端,配置前端模仿即可。
新建空白文件夹
mkdir /srv/tencent
mkdir /srv/tencent/page
拉取前端代码
/srv/tencent/page下执行
git clone git@github.com:PerCheung/mytencentpage.git
创建nginx.conf
/srv/tencent/page下创建nginx.conf如下
server {# 监听端口号为 8080listen 8080;# 服务器名为 localhostserver_name localhost;# 设置字符集为 utf-8charset utf-8;# 设置根目录为 /usr/share/nginx/filesroot /usr/share/nginx/files;
}
创建docker-compose.yaml
/srv/tencent/page下创建docker-compose.yaml如下
version: '3'
services:tencent_page:# 使用 nginx:1.21.1 镜像作为容器image: nginx:1.21.1# 设置容器名称为 tencent_pagecontainer_name: tencent_page# 启用特权模式,以便容器内部可以执行一些特殊操作privileged: true# 挂载本地 dist 目录到容器内的 /usr/share/nginx/files 目录volumes:- ./mytencentpage/dist:/usr/share/nginx/files# 挂载本地 nginx.conf 文件到容器内的 /etc/nginx/conf.d/default.conf 文件- ./nginx.conf:/etc/nginx/conf.d/default.conf# 将容器内的 8080 端口映射到宿主机的 80 端口ports:- 80:8080# 启动容器时执行的命令,创建 /usr/share/nginx/files 目录并启动 nginx 服务command: /bin/bash -c "mkdir -p /usr/share/nginx/files && nginx -g 'daemon off;'"
启动服务
docker-compose up -d
查看是否在运行

相关文章:
CentOS系统环境搭建(九)——centos系统下使用docker部署项目
centos系统环境搭建专栏🔗点击跳转 关于Docker-compose安装请看CentOS系统环境搭建(三)——Centos7安装Docker&Docker Compose,该文章同样收录于centos系统环境搭建专栏。 Centos7部署项目 采用前后端分离的形式部署。使用Do…...
【科研论文配图绘制】task1 掌握科研绘图的基本知识
【科研论文配图绘制】task1 掌握科研绘图的基本知识 写在最前 8月份Datawhale组队学习,写下该博客记录学习内容 1.科研论文配图的分类与构成 2.科研论文配图的格式和尺寸 3.科研论文配图中的字体和字号设置 4.科研论文配图的版式设计、结构布局和颜色搭配 占个…...
YAML资源清单
目录 YAML资源清单 (一)YAML 语言 (1)基本语法 (2)支持的数据结构 (二)通过资源清单管理容器资源 YAML 语法格式: 创建Service资源清单 (三ÿ…...
数据分析两件套ClickHouse+Metabase(二)
Metabase篇 Metabase安装部署 任何问题请查看 -> 官方文档 jar包从GitHub下载 -> 地址 同样有个问题, 默认数据源里没有ClickHouse, 不过ClickHouse官方提供了插件包 -> 插件包 在安装metabase目录下新建一个plugins文件夹, 把下载的clickhouse.metabase-driver.ja…...
神经网络基础-神经网络补充概念-20-激活函数
概念 激活函数是神经网络中的一个重要组成部分,它引入了非线性性质,使得神经网络可以学习和表示更复杂的函数关系。激活函数对于将输入信号转换为输出信号起到了关键作用,它在神经元的计算过程中引入了非线性变换。 几种常见的激活函数及其…...
欧拉函数和最大公约数
分析:如果两个数的最大公约数是一个质数p,那么这两个数都除以p,得到的两个数的最大公约数一定是1. 反证法:如果得到的两个数的最大公约数不是1,那么把此时的最大公约数乘以上边的最大公约数,得到的一定比上…...
出牌游戏(game)
安徽省2016年信息学竞赛试题(小学组) 题目描述 Description 小学生卡卡西最喜欢的电影是哈利波特,她一直幻想着自己可以进入神奇的魔法世界,今年暑假的一个傍晚,一只猫头鹰带着一封神秘的邀请函来到了她的家中,邀请函里是一张车…...
踩坑---uni-app中@input 事件不生效
在开发的时候遇到这么一种情况,我们希望input输入框的值是范围是0-100或者保留两位小数之类的,当你输入时处理后的结果却不生效,但是试过很多办法发现都实现不了,最后是按照以下方法解决的,问题原因是uni-app会延时,导致输入的结果…...
Linux命令(66)之tar
linux命令之tar 1.tar介绍 linux命令tar是压缩打包工具,可以将多个文件合并为一个文件,打包后的文件后缀为tar。与其它linux命令不同的是,tar命令的用户为linux的所有用户。 2.tar用法 tar [参数] [fliename.压缩打包后缀] [filename] ta…...
零拷贝详解
1、在没有DMA技术之前的I/O过程是这样的: CPU发出对应的指令给磁盘控制器,然后返回磁盘控制器收到指令后,于是就开始准备数据,会把数据放入到磁盘控制器的内部缓冲区,然后产生中断CPU收到中断信号后,停下手…...
新能源汽车电控系统
新能源汽车电控系统主要分为:三电系统电控系统、高压系统电控系统、低压系统电控系统 三电系统电控系统 包括整车控制器、电池管理系统、驱动电机控制器等。 整车控制器VCU 整车控制器作为电动汽车中央控制单元,是整个控制系统的核心,也是…...
Azure概念介绍
云计算定义 云计算是一种使用网络进行存储和处理数据的计算方式。它通过将数据和应用程序存储在云端服务器上,使用户能够通过互联网访问和使用这些资源,而无需依赖于本地硬件和软件。 发展历史 云计算的概念最早可以追溯到20世纪60年代的时候&#x…...
Zabbix监控MySQL数据库实战
zabbix监控mysql的方式 只是安装agent 启用模板监控 启用自定义脚本的模板监控 使用zabbix模版及结合shell脚本监控mysql 创建mysql的zabbix授权用户 mysql> grant all PRIVILEGES on *.* to zabbixlocalhost identified by zabbix; ###创建一个有权限的访问用户lqb密码设…...
代理模式(Java实现)
代理模式是常见的设计模式之一,顾名思义,代理模式就是代理对象具备真实对象的功能,并代替真实对象完成相应操作,并能够在操作执行的前后,对操作进行增强处理。(为真实对象提供代理,然后供其他对…...
炬芯科技发布全新第二代智能手表芯片,引领腕上新趋势!
2023年7月,炬芯科技宣布全新第二代智能手表芯片正式发布。自2021年底炬芯科技推出第一代的智能手表芯片开始便快速获得了市场广泛认可和品牌客户的普遍好评。随着技术的不断创新和突破,为了更加精准地满足市场多元化的变幻和用户日益增长的体验需求&…...
Linux学习之iptables规则基本演示
cat /etc/redhat-release看到操作系统是CentOS Linux release 7.6.1810,uname -r看到内核版本是3.10.0-957.el7.x86_64,iptables --version可以看到iptables版本是v1.4.21。 iptables的filter表 iptables -t filter 命令 规则链 规则 动作是iptables的…...
探索Python编程的技巧:多线程魔法、网络舞台、正则魔法阵与递归迷宫
一 多线程 1.1 进程和线程 进程: 就是一个程序,运行在系统之上,称这个程序为一个运行进程,并分配进程ID方便系统管理。线程:线程是归属于进程的,一个进程可以开启多个线程,执行不同的工作&…...
uniapp-微信小程序篇
uniapp-微信小程序篇 一、创建项目(以Vue3TS 项目为示例) 可以通过命令行的方式创建也可以通过HBuilderX进行创建(通过HBuilderX创建的项目建议选择最简单的模板),个人建议使用命令行方式。 (1) 命令行方式: npx degit dcloudio…...
使用pymupdf实现PDF内容搜索并显示功能
简介: 在日常工作和学习中,我们可能需要查找和提取PDF文件中的特定内容。本文将介绍如何使用Python编程语言和wxPython图形用户界面库来实现一个简单的PDF内容搜索工具。我们将使用PyMuPDF模块来处理PDF文件,并结合wxPython构建一个用户友好的…...
Dalsa线阵相机说明(Linea Color GigESeries 2k and 4K)
文章目录 一. Dalsa相机软件整体架构二. 相机编号说明以及软件要求三. 相机硬件参数三. 相机基本参数四. 软件参数设置列表1. Sensor Control Category2. I/O Control Category3. Counter and Timer Control Category4. Advanced Processing Control Category(1) 平场校正介绍(…...
【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
