乐趣区

关于前端:前端切图仔入门Docker三分钟上线自己的博客平台

依稀记得 2022 年趁某平台优惠买了台云服务器,周未筹备装置 MySQL 数据库,两天工夫卡在 MySQL 环境配置上,切实是折磨一气之下把服务器给退了。

要是我早一点学会 Docker,我的博客预计已上线一年啦!前端切图仔学会 Docker,我真的能让你三分钟上线本人博客平台。

不骗人,先把我的博客平台秀进去给 xdm 瞅瞅。

网址:https://www.linglan01.cn

Docker 能做什么?

举个🌰,大家有没有体验过在服务器上安装 MySQL、Node.js 等经验,装置它们并是不像手机利用商店、macOS 中的 App Store 那样点击下载即可,咱们还须要为它们手动配置环境变量、门路,更甚者要设置权限。像我整顿的 linux 装置 Node.js 文档,为了装置它我须要手敲好几个命令:

Node.js 装置是绝对简略的,为搭建一个后盾可能咱们须要应用到 MySQL、Nginx、Redis 等等。如果搭建这些服务能像咱们前端开发相熟的 Npm 包管理器那样一个命令下载安装他人曾经配置好的该多好,我只想做个伸手党,而 Docker 正好圆了我这个想法。

简言之,Docker 是帮忙开发者疾速简略搭建、部署、装置应用服务的一个工具。当然 Docker 性能不仅仅局限于这些,其余性能我临时没有应用到,xdm 自行钻研吧。

Docker 中的三个重要概念

镜像:

镜像概念等价于 Npm 包的概念,间接了解成 Npm 第三方包即可。例如:咱们下载 vue 开源的包npm i vue,下载 Node.js 镜像docekr pull node

容器

容器就有点难了解,Docker 容器和文件夹很相似,一个 Docker 容器蕴含了所有的某个利用运行所须要的环境。每一个 Docker 容器都是从 Docker 镜像创立的。Docker 容器能够运行、开始、进行、挪动和删除。每一个 Docker 容器都是独立和平安的利用平台,Docker 容器是 Docker 的运行局部。

前端 xd 能够将其了解成 npm run dev 命令执行后产生的后果。

仓库:

这个概念最容易了解了,间接将它了解与 Npm 仓库一样的货色。像应用命令 npm i vue 下载 vue,npm 其实是先在 npm 官网地址 https://www.npmjs.com/search?q=vue 查找,查找有对应包名后再下载。

同样的,当 docker 下载 Node.js 镜像docker pull node,它也是通过 Docker 仓库链接 https://hub.docker.com/_/node 查找后再下载。

Docker 的应用

默认 xdm 曾经是合格的开发人员,面向 bing 搜寻装置 Docker 是小菜一碟,所以我不想写 Dokcer 的装置,间接跳到 Docker 的应用。

没有玩过 Docker,xdm 必定玩过 Npm,特地是前端开发人员。Npm 常用命令,我默写都能默写进去。这里我用表格将 Docker 常用命令与 Npm 常用命令列出来,其实它们很多命令是某几个英语单词换掉了,含意是一样的。

Docker npm 作用
docker pull Docker 镜像名 npm i npm 包名 下载 npm 包 /Docker 镜像
docker rmi Docker 镜像 Id npm uninstall npm 包名 删除 npm 包 /Docker 镜像
docker images npm list 查看以后已下载的 npm 包 /Docker 镜像

当初咱们在服务器环境应用上列命令下载 Node.js 镜像来耍耍。

我服务器 Docker 版本是 v19.03.9:

咱先查看以后有哪些 Docker 镜像:

已存在 Node.js 镜像,并且 TAG 是 latest,阐明以后的镜像是最新版本。

那咱们下载另一个版本的 Node.js 镜像,下载其余版本的镜像仅须要在镜像名后加上 tag,如下载 https://hub.docker.com/_/node/tags 页面中第一列 tag 为 lts-buster 的 Node.js 镜像。

下载 lts-buster 的 Node.js 镜像, 而后再查看以后所有镜像:

// 下载 node tag 为 lts-buster 的 Docker 镜像
docker pull node:lts-buster
// 查看以后所有 Docker 镜像
docker images

删除镜像:

docerk rmi 镜像 Id

这里须要留神,删除是依据 ID 删除可不要搞错了,镜像 ID 是镜像下载后主动生成的,咱们不须要做其余的操作。

以上是对于 Docker 操作镜像罕用的几个命令,是不是非常容易。

而后是对于 Docker 容器的常用命令:

Docker 命令 作用
docker ps 查看以后的容器(运行、暂停状态)
docker ps -a 查看以后所有的容器(所有状态)
docker logs 容器 ID 查看容器日志
docker rm 容器 ID 删除容器
docker rm 容器 ID -f 强制删除容器
docker stop 容器 ID 暂停容器运行

如:查看我服务器以后的容器,其中 docker ps 命令仅展现 STATUS(状态)为非 Exited(进行)的,docker ps -a将展现所有。因为图中红框框起来的容器 STATUS(状态)为 Exited(进行),所以想见到它应应用 docker ps -a 命令。它是我成心进行的,但在部署中,进行的起因可能是某个参数谬误或容器外部报错导致,这时须要咱们去排查起因,docker ps -a必定会用上,docker logs 容器 ID查看容器谬误日志也不要遗记了。

删除、暂停容器不贴图啦,运行中的容器不能间接删除,须要先暂停容器运行。当然应用强制删除命令 docker logs 容器 ID -f 就没有这个限度了。

最初是docker run ... 它较非凡重点写, 它的作用是创立一个新的容器。

语法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS 罕用配置有:

Options 作用
-d 后盾运行容器,并返回容器 ID
-p 指定端口映射,格局为:主机 (宿主) 端口: 容器端口
–name=”nginx-lb” 为容器指定一个名称
–volume , -v 绑定一个数据卷

当初创立 Nginx 容器来演示下,先应用 docker pull nginx 下载 Nginx 镜像。

创立一个指定名称为 mynginx 的容器:

这里增加了-d,它的作用是使容器在后盾运行,个别都会把它加上。

删除指定名为“mynginx”的容器,而后再次创立指定名称为 mynginx 的容器,这次去掉 -d 看下成果:

去除-d, 创立容器运行后,终端面板不能再有其余操作,敞开以后终端面板也会导致容器进行运行。无特殊要求记得带上-d

容器是独立的,容器启动一个服务,外界如果想拜访,则须要暴露出一个端口,让咱们能拜访到容器外部的服务,像 nginx 默认监听端口为 80,当咱们去拜访一个 nginx 容器服务时,须要应用 -p 将容器内的 80 端口映射进去。

因为我的服务器 80 端口已被其余利用占用,所以改用 3000 端口演示:

这个时候,外网就能够间接拜访 Nginx。我的服务器 IP 已绑定域名,即域名 + 3000 端口即可胜利拜访到 Nginx。

绑定数据卷听着十分牛逼的名词,但其实它十分好了解。举个🌰,创立 Nginx 容器服务后,容器内会存在 nginx.conf 文件。如果咱们想自定义 Nginx 配置,就须要对 nginx.conf 进行批改,容器是无状态的,Nginx 容器删除从新创立,它的 nginx.conf 文件内容将会被重置。咱们须要将 nginx.conf 文件的批改长久化保留,须要应用 -v 进行数据卷绑定。
如:当初服务器存在 nginx.conf 文件,并内容已批改成咱们想要的配置

docker run --name "myNiginx" -v /nginx:/var/nginx -d nginx

其中 /nginx:/var/nginx: 右边是咱们批改的 nginx.conf, 左边是 Nginx 容器内的默认配置文件nginx.conf, 右边文件映射到左边文件,这样就能做到长久化保留nginx.conf 文件的批改。

Docker Compose 是什么

Docker Compose 是 Docker 官网的开源我的项目,实现对 Docker 容器集群疾速编排。

举个🌰,像公司中理论我的项目里,后端这边不单单仅起一个 java 服务,他可能须要通过 java 操作 MySQL 或 Radis 一类的数据库,可能还会应用到 Nginx 进行负载平衡一类的服务等等。

因而,可能须要创立治理 2 个或 2 个以上的容器,运行的容器变多又扩散不方便管理,比方:我想把后端服务相干的容器都停了,难道让我重复执行 docker stop 容器 ID 命令?

Docker Compose 出于上述问题呈现,它容许咱们通过创立一个 xxx.yaml 文件对立配置管理多个容器,而后只有一个命令,就能同时启动 / 敞开这些容器

Docker Compose 应用

Docker 的应用 一样,Docker Compose 也跳过装置,xdm 面向 bing 搜寻进行装置吧。

Docker Compose 常用命令:

Docker Compose 命令 形容
docker-compose up -d 启动服务
docker-compose down 进行服务

再应用 Docker Compose 命令之前,先筹备一个 .yaml 文件。

这里不再逐个粘贴 Docker Compose 命令执行后果图,前面一节有实例。

搭建博客平台

有了上述 Docker、Docker Compose 入门常识后,咱们能够开始搭建集体博客平台的操作啦!

我的集体博客平台 https://www.linglan01.cn 是部署 Github 社区的开源我的项目 vanblog,它是一个集体博客零碎,挪动端自适应,具体的介绍 xdm 请挪动它的官网文档。

咱们间接看到部署形式这节:

把邮箱批改成本人的,如果没有其余要求,其余地位的配置不须要改变。

在服务器创立 docker-compose.yaml 文件,复制官网文档的配置到 docker-compose.yaml 文件中。因为我想把 mongoDb 数据库服务凋谢进去,docker-compose.yaml文件中额定增加了其余的配置语句,xdm 能够疏忽掉它。间接复制官网贴的配置,再将邮箱地址批改成本人的即可。

最初运行 docker-compose up -d 命令。

总结

从一年前尝试装置配置 MySQL 数据库失败为结尾,向前端开发人员讲述 Docker、Docker Composep 是什么,它能帮忙咱们开发人员能做什么。

利用 Npm 包管理器相干概念,帮忙前端人员更好的了解镜像、容器、仓库 Docker 中三个重要概念。也讲述了 Docker、Docker Compose 简略的入门常识以及根底的应用,且实战部署一个博客平台体验一波 Docker 技术带来的益处。

B 站视频:
Docker 部署博客平台_哔哩哔哩_bilibili

参考

Get Docker | Docker Documentation

Docker Compose overview | Docker Documentation

全网最具体的 Docker-Compose 具体教程

Docker 学习笔记:Docker 简介和装置

Docker 入门教程

退出移动版