零基础部署nginx mysql springboot

news2025/2/23 19:28:15

参考:写给开发人员看的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.7
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        2d0083d
 Built:             Fri Aug 16 14:19:38 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.09.7
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       2d0083d
  Built:            Thu Aug 15 15:12:41 2019
  OS/Arch:          linux/amd64
  Experimental:     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 - Community
 Version:           24.0.6
 API version:       1.43
 Go version:        go1.20.7
 Git commit:        ed223bc
 Built:             Mon Sep  4 12:33:07 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.6
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.7
  Git commit:       1a79695
  Built:            Mon Sep  4 12:32:10 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.24
  GitCommit:        61f9fd88f79f081d64d6fa3bb1a0dc71ec870523
 runc:
  Version:          1.1.9
  GitCommit:        v1.1.9-0-gccaecfc
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

三、第一个Docker镜像hello world

  1. 先用pull命令从远端拉镜像到本地
  2. 用images命令查看所有镜像
  3. 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-world

Hello 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 the
    executable that produces the output you are currently reading.
 # daemon端(本地docker)将输出流给client端(命令行),显示到终端
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to 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
5e0cc45d89288faf9ba04b5e8b30548b8c14409a6d93e1abdd297676a7b7769a

docker 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 nginx

docker 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_keller

docker stop be

五、运行mysql

从远端仓库拉取mysql 通过docker run运行
-d进行后台运行
-p指定端口映射
-e后面跟着的是mysql的参数,通过上方连接可以查询到通过MYSQL_ROOT_PASSWORD设置数据库密码、MYSQL_DATABASE设置数据库名

docker pull mysql

docker 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-springboot

cd hello-springboot
vim Dockerfile

get命令找不到

安装git命令也可以

yum -y install git
git clone https://gitee.com/chaitou/hello-springboot

cd 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

这里也需要设置一下安全组

在这里插入图片描述
在这里插入图片描述
完成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1061918.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shiro应用到Web Application

一、权限基础 a) 认证(你是谁?) 判断你(被认证者)是谁的过程。通常被认证者提供用户名和密码。 常见的认证包含如下几种: 匿名认证:允许访问资源,不做任何类型的安全检查。表单认证:访问资源之前,需要提…

SpringBoot vue云办公系统

SpringBoot vue云办公系统 系统功能 云办公系统 登录 员工资料管理: 搜索员工 添加编辑删除员工 导入导出excel 薪资管理: 工资账套管理 添加编辑删除工资账套 员工账套设置 系统管理: 基础信息设置 部门管理 职位管理 职称管理 权限组管理 操作员管理 开发环境和技术 开发语…

JavaEE-线程进阶

模拟实现一个定时器 运行结果如下&#xff1a; 上述模拟定时器的全部代码&#xff1a; import java.util.PriorityQueue;//创建一个类&#xff0c;用来描述定时器中的一个任务 class MyTimerTask implements Comparable<MyTimerTask> {//任务执行时间private long …

数据分析视角中的商业分析学习笔记

数据分析一大堆&#xff0c;结果却是大家早就知道的结论&#xff1f;是工具和方法出问题了吗&#xff1f;真正原因可能是你的思维有误区。 为什么分析的这么辛苦&#xff0c;得出的结论大家早知道&#xff0c;谁谁都不满意&#xff1f;核心原因有3个&#xff1a; 分析之前&am…

DHCPsnooping 配置实验(2)

DHCP报文泛洪攻击 限制接收到报文的速率 vlan 视图或者接口视图 dhcp request/ dhcp-rate dhcp snooping check dhcp-request enable dhcp snooping alarm dhcp-request enable dhcp snooping alarm dhcp-request threshold 1 超过则丢弃报文 查看[Huawei]dis dhcp statistic…

使用python-opencv检测图片中的人像

最简单的方法进行图片中的人像检测 使用python-opencv配合yolov3模型进行图片中的人像检测 1、安装python-opencv、numpy pip install opencv-python pip install numpy 2、下载yolo模型文件和配置文件&#xff1a; 下载地址&#xff1a; https://download.csdn.net/down…

如何使用 AI与人工智能的定义、研究价值、发展阶段

目录 一、什么是人工智能 二、人工智能的研究价值 三、人工智能的发展阶段 一、什么是人工智能 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是一门研究如何使计算机能够模拟和执行人类智能活动的科学与技术。人工智能旨在开发智能代理&…

CLIP 论文逐段精读【论文精读】

00:06评价&#xfeff; 评价&#xff1a;工作clip呢自从去年2月底提出就立马火爆全场&#xff0c;他的方法出奇的简单&#xff0c;但是效果呢又出奇的好&#xff0c;很多结果和结论呢都让人瞠目结舌。比如呢作者说clip的这个迁移学习能力是非常强的&#xff0c;它预训好的这个模…

【C语言】利用数组处理批量数据(一维数组和二维数组)

前言:在前面学习的程序中使用的变量都属于基本类型&#xff0c;例如整型、字符型、浮点型数据&#xff0c;这些都是简单的数据类型。对于简单的问题&#xff0c;使用这些简单的数据类型就可以了。但是对于有些需要处理的数据&#xff0c;只用以上简单的数据类型是不够的&#x…

Obsidian插件推荐_231005

起因 十一在家整理 OB 笔记&#xff0c;发现两个超好用的插件&#xff1a;Linter & tag wrangler。 前一阵把 Obsidian 笔记用 Hexo 转换成静态网页发到 github.io 做自己 blog 网站。发现了笔记中的一些问题&#xff0c;比如 tag 过多、重复&#xff0c;markdown 格式不…

菲律宾电商市场潜力巨大,Temu迎来东南亚扩张良机!(测评补单)

从拼多多传出筹备出海扩张的消息以来&#xff0c;业界都认定其迟早要进军东南亚市场。在7月份Temu上线日本站后可以看出Temu这条扩张路线背后的商业逻辑是先占领高购买力国&#xff0c;再向中低购买力国扩张&#xff0c;所以亚洲首站选择了高购买力的日本。果然在完成日韩布局后…

零基础入门初学 Python 需要安装哪些软件?

Python是近年来备受热门的编程语言&#xff0c;其简明易读、开源免费、跨平台等特点&#xff0c;使得Python倍受喜爱&#xff0c;成为初学者及开发者心中的首选。 如果你是第一次接触Python&#xff0c;又不想繁琐地安装各种软件&#xff0c;可以尝试在线运行Python代码&#…

【RCRL充放电时间相关计算】

一. 基础知识 L、C元件称为“惯性元件”&#xff0c;即电感中的电流、电容器两端的电压&#xff0c;都有一定的“电惯性”&#xff0c;不能突然变化。充放电时间&#xff0c;不光与L、C的容量有关&#xff0c;还与充/放电电路中的电阻R有关。RC电路的时间常数&#xff1a;τRC…

【扩散模型】 DDPM和DDIM讲解

扩散模型DDPM和DDIM 扩散模型之DDPM介绍了经典扩散模型DDPM的原理和实现&#xff0c;那么生成一个样本的次数和训练次数需要一致&#xff0c;导致采样过程很缓慢。这篇文章我们将介绍另外一种扩散模型DDIM&#xff08;Denoising Diffusion Implicit Models&#xff09;&#x…

STM32CubeMX学习笔记-DAC接口使用(输出电压)

STM32CubeMX学习笔记-DAC接口使用&#xff08;输出电压&#xff09; 一、DAC简介二、DAC通道选择三、新建工程四、DAC14.1 参数配置4.2 生成代码 五、库函数六、修改main函数 原创链接 1 一、DAC简介 DAC(Digital-to-Analog Converter)&#xff0c;即数字/模拟转换模块&#x…

番外--常用文件目录类命令

------------- task00: 00&#xff1a;常用文件目录类命令1-18.&#xff08;pwd&#xff1b; cd&#xff1b;ls&#xff1b; more&#xff1b;less&#xff1b;head&#xff1b;tail&#xff1b; mkdir&#xff1b;rmdir&#xff1b;cp&#xff1b;mv&#xff1b;rm&#xff1b…

第八章 排序 三、希尔排序

目录 一、算法思想 二、例子 三、代码实现 五、验证 六、空间复杂度 七、时间复杂度 八、稳定性 一、算法思想 先追求表中元素部分有序&#xff0c;在逐渐逼近表中元素全部有序。 二、例子 1、我们要升序排列此表 2、取一个差值作为子表的划分的条件&#xff0c;希尔本…

SSM - Springboot - MyBatis-Plus 全栈体系(十九)

第四章 SpringMVC 二、SpringMVC 接收数据 1. 访问路径设置 RequestMapping 注解的作用就是将请求的 URL 地址和处理请求的方式&#xff08;handler 方法&#xff09;关联起来&#xff0c;建立映射关系。SpringMVC 接收到指定的请求&#xff0c;就会来找到在映射关系中对应的…

CTFHUB - SSRF

目录 SSRF漏洞 攻击对象 攻击形式 产生漏洞的函数 file_get_contents() fsockopen() curl_exec() 提高危害 利用的伪协议 file dict gopher 内网访问 伪协议读取文件 端口扫描 POST请求 总结 上传文件 总结 FastCGI协议 CGI和FastCGI的区别 FastCGI协议 …

盒子阴影和网页布局

盒子阴影 box-shadow: 10px 10px 10px 4px rgba(0,0,0,.3);//最后一个是透明度 传统网页布局的三种方式 标准流 就是按照规定好的默认方式排列 1.块级元素&#xff1a;div、hr、p、h1~h2、ul、ol、dl、form、table 行内元素会按照书顺序&#xff0c;从左到右顺序排列&#…