零基础部署nginx mysql springboot
参考:写给开发人员看的Docker干货,零基础部署nginx mysql springboot
一、连接linux
阿里云
参考:部署到Linux
可能需要购买:购买链接
二、安装docker
# 先切换到root用户下
sudo su# 更新apt-get,保证apt-get最新版本
apt-get update# 安装docker
apt-get install -y docker.io# 查看docker版本
docker version# 启动docker服务(有可能不需要这一步,多执行一遍也不会有错)
service docker start# 再执行一次version,看到Client、Service说明启动成功了
docker version
Client:Version: 18.09.7API version: 1.39Go version: go1.10.4Git commit: 2d0083dBuilt: Fri Aug 16 14:19:38 2019OS/Arch: linux/amd64Experimental: falseServer:Engine:Version: 18.09.7API version: 1.39 (minimum version 1.12)Go version: go1.10.4Git commit: 2d0083dBuilt: Thu Aug 15 15:12:41 2019OS/Arch: linux/amd64Experimental: false
出现问题 1:bash: apt-get: command not found
bash: apt-get: command not found
apt-get: command not found,这个的出现是因为系统的原因。
Linux系统分为两种:
1.RedHat系列:Redhat、Centos、Fedora等2.Debian系列:Debian、Ubuntu等
RedHat系列的包管理工具是yum
Debian系列的包管理工具是apt-get
查看系统版本:
cat /proc/version
---------------------------Linux version 4.18.0-305.3.1.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.4.1 20200928 (Red Hat 8.4.1-1) (GCC)) #1 SMP Tue Jun 1 16:14:33 UTC 2021
我的是Red Hat,所以因该用yum
yum update
成功!
问题 2:重启系统
直接在阿里云ESC- 实例重启
问题 3:Failed to download metadata for repo ‘appstream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist
可能是 CentOS 已经停止维护的问题。2020 年 12 月 8 号,CentOS 官方宣布了停止维护 CentOS Linux
的计划,并推出了 CentOS Stream 项目,CentOS Linux 8 作为 RHEL 8 的复刻版本,生命周期缩短,于 2021
年 12 月 31 日停止更新并停止维护(EOL),更多的信息可以查看 CentOS 官方公告。如果需要更新 CentOS,需要将镜像从
mirror.centos.org 更改为 vault.centos.org
首先,进入到 yum 的 repos 目录
cd /etc/yum.repos.d/
修改 centos 文件内容
编辑模式:按 i 进入编辑
退出编辑 :电脑左上角 ESC
保存::wq
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
生成缓存更新
yum makecache
运行 yum update 并重新安装 vim编辑器
yum update -y
yum -y install vim
确认一下你的VIM是否已经安装
rpm -qa|grep vim
如果已安装,会显示:
[root@localhost usr]# rpm -qa|grep vim
vim-minimal-7.4.629-6.el7.x86_64
vim-filesystem-7.4.629-6.el7.x86_64
vim-enhanced-7.4.629-6.el7.x86_64
vim-common-7.4.629-6.el7.x86_64
vim-X11-7.4.629-6.el7.x86_64
如果缺少了其中某个
yum -y install vim-enhanced
如果上面三个包一个都没有显示,则直接输入命令:
yum -y install vim*
我的还是没有x11,不管了,继续安装docker
yum install docker -y
启动
start docker.service
Failed to start docker.service: Unit docker.service not found.
CentOS安装Docker,启动时候报错Failed to start docker.service: Unit
docker.service not
found.(如下:),原因是CentOS默认使用podman代替docker,所以需要将podman卸载.
yum erase podman buildah
安装依赖环境
yum install -y yum-utils
安装配置镜像
sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
问题 4:Repository extras is listed more than once in the configuration
可能是镜像重复了,不管了,直接启动
sudo yum install -y docker-ce docker-ce-cli containerd.io
成功!
启动Docker服务
systemctl start docker
成功!
Client: Docker Engine - CommunityVersion: 24.0.6API version: 1.43Go version: go1.20.7Git commit: ed223bcBuilt: Mon Sep 4 12:33:07 2023OS/Arch: linux/amd64Context: defaultServer: Docker Engine - CommunityEngine:Version: 24.0.6API version: 1.43 (minimum version 1.12)Go version: go1.20.7Git commit: 1a79695Built: Mon Sep 4 12:32:10 2023OS/Arch: linux/amd64Experimental: falsecontainerd:Version: 1.6.24GitCommit: 61f9fd88f79f081d64d6fa3bb1a0dc71ec870523runc:Version: 1.1.9GitCommit: v1.1.9-0-gccaecfcdocker-init:Version: 0.19.0GitCommit: de40ad0
三、第一个Docker镜像hello world
- 先用pull命令从远端拉镜像到本地
- 用images命令查看所有镜像
- run命令运行镜像
# pull: 从仓库拉取镜像
# docker pull [options] name[:tag]
# docker pull [可选参数] 镜像名[:版本号](如果不填默认为最新版本)
docker pull hello-world
# 默认从docker官方获取镜像,很可能因为网络原因需要多拉取几次# 查看本机上的所有镜像
# docker images [可选参数]
docker images
# 看到hello-world说明拉取成功了
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest fce289e99eb9 15 months ago 1.84kB# 运行镜像
# docker run [options] image[:tag] [command] [args]
# docker run [可选参数] 镜像名[:版本号] [镜像运行时要执行的命令] [命令参数]
docker run hello-worldHello from Docker!
# 当你看到这条消息说明安装成功了
This message shows that your installation appears to be working correctly.
# 生成这条信息,docker做了以下几个步骤
To generate this message, Docker took the following steps:# client端(也就是终端,命令行)连接到daemon端(指的是我们本地docker)1. The Docker client contacted the Docker daemon.# daemon端(本地docker)到Docker hub仓库中拉取了hello-world镜像2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)# daemon端(本地docker)从镜像中创建了一个容器,这个镜像运行了当前看到输出的代码3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.# daemon端(本地docker)将输出流给client端(命令行),显示到终端4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.
配置加速器(已经科学上网的可以忽略)
镜像加速器
四、运行nginx
# 拉取nginx镜像
docker pull nginx# 查看镜像
docker images# REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ed21b7a8aee9 12 days ago 127MB
hello-world latest fce289e99eb9 15 months ago 1.84kB
运行方式
刚刚run命令运行了hello world,这里详细将一下,运行方式有2种,前台运行和后台运行,前台运行则会占用终端,一般都会选择让容器在后台运行
网络
桥接(Bridge):也是最常用的方式,该模式下会将ubuntu主机上的端口映射到docker容器的端口上,例如8080:8081则会将主机上的8080端口映射到docker容器的8081端口
共享(Host):ubuntu主机与docker共享同一端口
无网络(None):docker没有网络,外界无法访问
桥接 Bridge
1. -p 指定端口模式
# docker run -d -p 主机端口:容器端口 image[:tag]
docker run -d -p 8080:80 nginx
5e0cc45d89288faf9ba04b5e8b30548b8c14409a6d93e1abdd297676a7b7769adocker stop 5e
5e:容器端口的前两个字母
可以通过:8080访问nginx了
可能出现的问题:不能访问8080
添加安全组
自己实例的 IP地址:8080 就可以访问了
实例
找不到哪里需要 r 命令了,这里说一下安装 r 命令
yum install R
2. -P 随机端口
# 随机开启一个端口映射到容器
# docker run -d -P image[:tag]
docker run -d -P nginxdocker ps
# 可以看到是32768端口映射到80端口
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
be30acaeb546 nginx "nginx -g 'daemon of…" 10 seconds ago Up 9 seconds 0.0.0.0:32768->80/tcp trusting_kellerdocker stop be
五、运行mysql
从远端仓库拉取mysql 通过docker run运行
-d进行后台运行
-p指定端口映射
-e后面跟着的是mysql的参数,通过上方连接可以查询到通过MYSQL_ROOT_PASSWORD设置数据库密码、MYSQL_DATABASE设置数据库名
docker pull mysqldocker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=leilema -e MYSQL_DATABASE=leilema mysql:latest
安装成别人的数据库了
#查看所有容器
docker ps
#停止所有容器
docker stop 容器id前两位
#删除容器
docker rm 容器id前两位
#查看所有镜像
docker images
#删除镜像
docker rmi 镜像id前两位
六、制作自己的镜像
编写Dockerfile,说明镜像要如何进行创建,跟makefile有点像
通过docker build命令构建镜像
编写Dockerfile
使用git拉取项目(或者自己通过rz命令将jar包传到服务器上)
cd到jar包目录下,在同级目录开始编写Dockerfile文件
get clone https://gitee.com/chaitou/hello-springbootcd hello-springboot
vim Dockerfile
get命令找不到
安装git命令也可以
yum -y install git
git clone https://gitee.com/chaitou/hello-springbootcd hello-springboot
vim Dockerfile
dockerfile文件如下
# 依赖的基础镜像
from java:8
# 创建者
MAINTAINER bugpool xxx@163.com
# 将当前目录下的jar复制到容器/目录下
COPY hello-springboot.jar /hello-springboot.jar
# 指定启动时运行java -jar 命令
ENTRYPOINT ["java", "-jar","/hello-springboot.jar"]
构建镜像
需要从仓库先pull一下java镜像
使用docker build构建镜像,-t指定镜像名:版本号,最后一个.表示当前目录
启动镜像,如果使用的是上面我提供的jar包,我特意将其运行端口改为8081来练习一下-p桥接网络的使用。
# 拉取java8
docker pull java:8
# 构建镜像
docker build -t hello-springboot:1.0 .
# 启动镜像
docker run -p 80:8081 hello-springboot:1.0
这里也需要设置一下安全组
完成!
相关文章:

零基础部署nginx mysql springboot
参考:写给开发人员看的Docker干货,零基础部署nginx mysql springboot 一、连接linux 阿里云 参考:部署到Linux 可能需要购买:购买链接 二、安装docker # 先切换到root用户下 sudo su# 更新apt-get,保证apt-get最新…...
6-3 模式匹配
description 给出主串s和模式串t,其长度均不超过1000。本题要求实现一个函数BF(string s, string t),求出模式串t在主串s中第一次出现的位置(从0开始计算),如果在s中找不到t,则输出-1。 函数接口定义&…...
SQL JOIN 时 USING 和 ON 的异同
在数据表做 join 时,即可以用 using,也可以用 on。有什么异同点呢。 ON 是更加普遍的用法,可以连接表 On 一个字段,多个字段,甚至一个条件表达式。举例 SELECT * FROM world.City JOIN world.Country ON (City.Cou…...
安全学习_开发相关_JNDI介绍(注入)RMILDAP服务
文章目录 参考&本节目的JNDI概念-RMI&LDAP服务调用检索:在RMI服务中调用了InitialContext.lookup()的常用类有:在LDAP服务中调用了InitialContext.lookup()的常用类有: JNDI注入-使用工具生成远程调用JNDI远程调用-工具(j…...

C#学生选课及成绩查询系统
一、项目背景 学生选课及成绩查询系统是一个学校不可缺少的部分,传统的人工管理档案的方式存在着很多的缺点,如:效率低、保密性差等,所以开发一套综合教务系统管理软件很有必要,它应该具有传统的手工管理所无法比拟的…...

【C语言】利用数组处理批量数据(一维数组和二维数组)
前言:在前面学习的程序中使用的变量都属于基本类型,例如整型、字符型、浮点型数据,这些都是简单的数据类型。对于简单的问题,使用这些简单的数据类型就可以了。但是对于有些需要处理的数据,只用以上简单的数据类型是不够的&#x…...

WPF中, 如何将控件的触发事件绑定到ViewModel
在DataGrid 等控件中, 有很多这种带闪电符号的触发事件. 如果用传统的事件驱动, 则直接在后台中建立 一个private PropertyChanged(Sender s, EventAgars Args) 即可. 但是如果需要绑定到ViewModel的话? 应该怎么做? 带闪电符号的触发事件 实现viewModel绑定前端触发事件的…...
解决Qt msvc编译器 中文显示乱码问题
第一步:代码文件选择用utf8编码带bom。第二步:在有中文汉字的代码文件顶部加一行(一般是cpp文件) #pragma execution_character_set(“utf-8”) 可以考虑放在head.h中,然后需要的地方就引入head头文件就行,…...

JAVA面经整理(7)
一)什么是AQS? 1)AQS也被称之为是抽象同步队列,它是JUC包底下的多个组件的底层实现,Lock,CountDownLatch和Semphore底层都使用到了AQS AQS的核心思想就是给予一个等待队列和同步状态来实现的,它的内部使用一个先进先出…...
CentOS7使用技巧
1、防火墙相关 关闭防火墙 systemctl stop firewalld 关闭防火墙开机自启 systemctl disable firewalld.service 查看防火墙状态 systemctl status firewalld...

Nature Machine Intelligence | “化学元素知识+功能提示”双驱动,探索分子预测新方法
论文题目:Knowledge graph-enhanced molecular contrastive learning with functional prompt 论文链接:https://doi.org/10.1038/s42256-023-00654-0 项目地址:GitHub - HICAI-ZJU/KANO: Code and data for the Nature Machine Intelligence…...

CppCheck静态代码检查工具教程【Windows和Linux端】
目录 1、背景 2、特性介绍 2.1、检查结果 2.2、检查范围 2.3、支持的检查规则(列举一些): 2.4、自定义规则 3、linux 端 4、windows 端 1、背景 最近调研了几款 c/c 代码静态检查工具,包括 cppcheck、cpplint、cppdepend、splint、ts…...

W25Q128芯片手册精读
文章目录 前言1. 概述2. 特性3. 封装类型和引脚配置3.1 8焊盘WSON 8x6 mm3.2其他封装 4. 引脚描述4.1 片选4.2 串行数据输入输出4.3 写保护4.4 保持脚4.5 时钟 5. 块图6. 功能描述6.1 SPI功能6.1.1 标准SPI6.1.2 双通道SPI6.1.3 四通道SPI6.1.4 保持功能 6.2 写保护6.2.1 写保护…...

QT商业播放器
QT商业播放器 总体架构图 架构优点:解耦,采用生产者消费者设计模式,各个线程各司其职,通过消息队列高效协作 这个项目是一个基于ijkplayer和ffplayer.c的QT商业播放器, 项目有5部分构成: 前端QT用户界面 后端是集成了…...

Python的函数
近期遇到了一个没怎么看懂的Python函数的形式。 def twoSum(self, nums: List[int], target: int) -> List[int]: 后来上网查了资料。...

【物联网】STM32的中断机制不清楚?看这篇文章就足够了
在嵌入式系统中,中断是一种重要的机制,用于处理来自外部设备的异步事件。STM32系列微控制器提供了强大的中断控制器,可以方便地处理各种外部中断和内部中断。本文将详细介绍STM32中断的结构和使用方法。 文章目录 1. 什么叫中断2. 中断优先级…...

深入剖析红黑树:优雅地平衡二叉搜索树
目录 一.红黑树的概念二.插入操作三.与AVL树的比较 一.红黑树的概念 在之前的学习中,我们了解了二叉搜索平衡树,AVL树通过控制每个结点中的平衡因子的绝对值不超过1,实现了一个高性能的树。而相较于AVL的高度平衡,红黑树觉得AVL为…...

C10K问题:高并发模型设计
一、循环服务器模型 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <signal.h> #include <sys/types.h> #include <sys/socket.h> //*******// #include &l…...

哈希/散列--哈希表[思想到结构][==修订版==]
文章目录 1.何为哈希?1.1百度搜索1.2自身理解1.3哈希方法/散列方法1.4哈希冲突/哈希碰撞1.5如何解决?哈希函数的设计 2.闭散列和开散列2.1闭散列/开放定址法2.2开散列/链地址法/开链法1.概念2.容量问题3.字符串问题4.开散列性能测试5.开散列与闭散列比较 3.代码实现[配备详细…...

成都建筑模板批发市场在哪?
成都作为中国西南地区的重要城市,建筑业蓬勃发展,建筑模板作为建筑施工的重要材料之一,在成都也有着广泛的需求。如果您正在寻找成都的建筑模板批发市场,广西贵港市能强优品木业有限公司是一家值得关注的供应商。广西贵港市能强优…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...