当前位置: 首页 > news >正文

零基础部署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

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

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

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

http://www.lryc.cn/news/182807.html

相关文章:

  • 6-3 模式匹配
  • SQL JOIN 时 USING 和 ON 的异同
  • 安全学习_开发相关_JNDI介绍(注入)RMILDAP服务
  • C#学生选课及成绩查询系统
  • 【C语言】利用数组处理批量数据(一维数组和二维数组)
  • WPF中, 如何将控件的触发事件绑定到ViewModel
  • 解决Qt msvc编译器 中文显示乱码问题
  • JAVA面经整理(7)
  • CentOS7使用技巧
  • Nature Machine Intelligence | “化学元素知识+功能提示”双驱动,探索分子预测新方法
  • CppCheck静态代码检查工具教程【Windows和Linux端】
  • W25Q128芯片手册精读
  • QT商业播放器
  • Python的函数
  • 【物联网】STM32的中断机制不清楚?看这篇文章就足够了
  • 深入剖析红黑树:优雅地平衡二叉搜索树
  • C10K问题:高并发模型设计
  • 哈希/散列--哈希表[思想到结构][==修订版==]
  • 成都建筑模板批发市场在哪?
  • 亨元模式 结构型模式之六
  • 面试题: Spring中Bean的实例化和Bean的初始化有什么区别?
  • 阻塞队列,生产者消费者模型
  • 【RCRL充放电时间相关计算】
  • C++ primer plus--输入、输出和文件
  • 案例题--Web应用考点
  • MySQL的SQL 优化:提升数据库性能
  • 【匠心打造】从0打造uniapp 可视化拖拽设计 c_o 第十篇
  • BIT-5-操作符详解(C语言初阶学习)
  • 【重拾C语言】三、分支程序设计(双分支和单分支程序设计、逻辑判断、多分支程序设计、枚举类型表示;典型例题:判断闰年和求一元二次方程根)
  • Shiro应用到Web Application