前端docker部署(通过nginx镜像部署),内含Dockerfile和nginx.conf.template两个配置文件

前端docker部署(通过nginx镜像部署),内含Dockerfile和nginx.conf.template两个配置文件

来啦来啦,下面大米饭来分享前端怎么通过docker利用nginx镜像来部署项目,正常来说docker部署属于运维工作,身为前端的我暂时只负责了前半部分镜像相关的工作,后面更深层的k8s部署原理等只闻其名,未闻其含义,后面略讲一些,有兴趣的人可以深究一下

什么是Docker

什么是Docker,百度官方表明Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

简单来说就是,docker是一个开源的容器平台,帮助开发者在不同的环境和平台、不同的计算机,实现轻松部署以及管理,把项目打包成容器的形式,并且可以在任何支持docker的环境中运行。

Docker优质文章传送门,没有docker的可以按照下面文章安装了解一下
Docker-desktop(Docker桌面版)——入门篇 点击查看
Docker Desktop 安装使用教程 点击查看
Docker基础篇 点击查看

几个基本概念

镜像

通俗一点来讲,镜像类似一个菜谱,是一个静态模板,上面列出了制作一道菜所需要的全部食材和步骤。
这个菜谱可以拿给不同人不同地方-也就是不限于Windows、Linux环境使用,做出美味菜肴(也就是容器),它是只读的。
在Docker中,镜像是docker中的一个基础概念,镜像可以运行到容器里面,镜像是一个预配置的、包含了Nginx服务器环境的静态模板,记录了运行某个应用或服务所需要的操作系统环境、文件以及各种依赖和程序本身的项目信息。前端主要通过docker根据打包好的项目文件去生成镜像。镜像可以通过从官方仓库下载或者基于现有的镜像使用docker build命令通过Dockerfile自定义构建。

容器

那么也通俗一点来讲呢,容器类似从镜像这个 “静态模板” 里生成出来的一个个具体的“菜肴”,这些“菜肴”之间是独立的,互不影响的,类似生活中每个人都可以独立享用自己的美味佳肴。
也就是说,容器是镜像的一个可写副本,并且每个容器都有自己独立的运行空间,包括进程、网络配置等。即使是基于同一镜像创建出来的容器,它们之间也是隔离的,各自拥有自己的运行状态。

总结:镜像是静态模板,容器是镜像的实例化,是从镜像启动的一个可写、运行时环境,同一镜像可以启动多个容器,每个容器可以根据需要独立地进行个性化配置和操作。

Dockerfile

Dockerfile是用来构建镜像的脚本,这个脚本里面有一些说明,主要是把前端生成的项目复制到容器中某个位置以及后续要用的nginx配置文件复制到容器中的某个位置(当然还有其他,比如设置环境变量或者启动命令等,本人项目只是把主要文件复制到镜像中)

Dockerfile文件例子如下所示

# 设置 nginx 作为静态资源服务器
# 指定基础镜像nginx:alpine
FROM nginx:alpine

# 将我们自定义的网站静态文件复制到容器中
COPY dist/ /usr/share/nginx/html/
# 将我们自定义的nginx配置文件复制到容器中
COPY nginx.conf.template /etc/nginx/conf.d/default.conf

# 暴露80端口
EXPOSE 80

# 启动 nginx 服务器
CMD ["nginx", "-g", "daemon off;"]

nginx.conf.template

nginx.conf.template文件可以自行命名,主要是跟Dockerfile搭配使用的,是一个nginx配置文件,用来复制到容器中,记住就是一个nginx配置文件,(后面自己可以在阿里云控制台进行查看复制过去的nginx文件,找相关路径就可以了/etc/nginx/conf.d/default.conf)


熟悉的nginx配方

镜像仓库

镜像仓库主要是来存储和管理容器镜像的服务,通过标签(tag)来区分镜像的不同版本,后续也是根据这个版本去做项目版本更新
可以选择官方镜像库,也可以选择一下私有镜像库去管理,一般公司会有自己的私有镜像库。
比如 Harbor等可以托管私有镜像

阿里云的Kuber***es(k8s)服务

Kuber***es(简称k8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器应用。阿里云提供了Kuber***es服务,成为阿里云容器服务Kuber***es,用户可以直接在阿里云平台进行创建和管理k8s集群。实现一键部署、完全托管、深度集成等优势
总结来说,阿里云为用户提供了一个内置于其云平台之中的Kuber***es环境,允许用户无缝地在云上运行和管理Kuber***es集群,而无需关注集群底层的运维复杂性。

前端发布流程

首次部署

  • 打开 ACK 集群,选择合适的工作负载类型,点击“使用镜像创建”按钮(没有集群可以先按官方指示创建集群)
  • 填写相关信息(应用名称,镜像名称,首次镜像tag,设置镜像密钥,选择cpu和所需资源等

    在详情内看到镜像状态为Running,代表创建成功
  • 创建 ALB 路由(这里不怎么熟,跟着其他人来的,有兴趣的可以自己在阿里云试下)
    点击“网络-路由”菜单,点击“创建 Ingress"按钮,选择 ALB 应用负载均衡,填写对应内容,在 DNS 解析,将对应域名配置到该 ALB,即可访问该服务

正常发布流程

  • 发布可执行文件/静态文件(前端打包dist文件)
  • 打包成Docker镜像
  • 将镜像推送到公司私有镜像仓库
  • 触发k8s拉取最新镜像,更改tag来更新项目

1.发布可执行文件,前端打包dist文件,正确配置Dockerfile和nginx.conf.template两个脚本文件

2. 打包docker镜像

  • 进入项目根目录运行cmd,打开docker桌面版软件
  • 拉取官方nginx:alpine镜像,因为用到了nginx作为静态资源服务器,docker pull nginx:alpine
  • 有私有仓库的,进行登录,docker login xxx(仓库名),接着输入账号密码
  • 开始打包成镜像,命令如下docker build -t xxxx:tag . ,具体命令规则可查百度,后面不要忘记加点 (xxxx是镜像名,tag是镜像唯一标签,可以自己命名,也可以自动生成)
  • 这也就说明打包成了一个镜像,可以在docker桌面版查看改镜像,也可以在软件里面运行改镜像生成容器在本地查看项目效果
  • 没有问题的话,就可以把打包出来的镜像push到镜像仓库里面,docker push xxxx:tag
  • 推送镜像之后触发k8s拉取镜像,登录阿里云进入具体容器根据tag去更新项目

完结了,上面是一些更偏向于前端的docker部署,有深究的小伙伴可以评论区留言~
老规矩 让我们一起进步加油!我是到处乱跑的大米饭,一只笨笨的但是一直在慢慢前进的羊~ 人生目标是成为懒羊羊

转载请说明出处内容投诉
CSS教程_站长资源网 » 前端docker部署(通过nginx镜像部署),内含Dockerfile和nginx.conf.template两个配置文件

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买