A-A+

用Docker部署我们的WEB应用

2020年02月24日 Linux 暂无评论

Docker部署这部分的内容可能有点偏运维,但我们开发中也常会碰到。做为一名开发码农,面对测试码农的BUG的时候,常常先回的一句话就是:

这在我电脑上明明是好的呀!

然后,为了应对我们开发,广大码农群体就需要一种统一的运行环境来处理我们运行的代码,以避免出现上面说的情况。以后,他们再也不问我们的运行环境是什么了。

一、什么是Docker?

简单粗暴地理解,Docker就是一个模拟小型服务器的东西,我们把程序放到这上面去,就能够跑起来。因为它很小,所以,它可以在同一个服务器跑起来多个服务,也就是,利用Docker可以跑多个服务。在深入理解之前,我们看看WEB服务是怎么跑起来的。

  1. WEB物理服务器
    我们的WEB应用开发好了之后,要部署到服务器上,然后别人通过访问我们的WEB服务器的地址,就能访问到我们的WEB应用了。实际上,是我们在服务器上运行起了像Apache\nginx\nodexjs\IIS之类的web服务程序,它们可以提供WEB服务。问题来了,假如你买了一台很贵性能很强的服务器,如果只运行一个web服务程序的话,又造成了很大的资源浪费。所以,有了虚拟机。

  2. 虚拟机
    虚拟机简单说是一个软件,在物理机上安装这个软件后,把硬件分配成一块一块的,然后每个虚拟机安装上操作系统,各类WEB服务等等。但虚拟机需要装操作系统,它还是太庞大了。

  3. Docker
    Docker能像虚拟机一样提供服务,但又不像虚拟机那么庞大。虚拟机是对每个操作系统进行了隔离,而Docker则是对进程进行了隔离。所以,Docker在安装、部署和启动方面,有着非着大的优势。

二、Docker的安装与操作

我们安装Docker最好是在linux操作系统下进行。所以,我们可以在windows上安装一个虚拟机,然后再在虚拟机上操作。关于Docker的安装和操作,可以参考这个网站:Docker从入门到实践

我们需要提前着重了解几个基本概念:容器、镜像和仓库。

三、创建WEB应用

假设我们的系统已经安装好操作环境,那么开始我们的部署之旅吧!我们先来创建一个WEB应用,用vue来实践我们的部署。

1. 创建项目

先安装vue-cli,创建一个vue项目,

2.项目打包

直接进入项目,把项目打包

得到打包后的文件夹dist

3. 拉取镜像

我们需要一个nginx的镜像来做为我们的WEB服务程序,我们可以手动去下载这个镜像:

docker镜像(Image)一个特殊的文件系统。Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。

4. 配置nginx服务程序

在我们下载好了镜像后,还需要做一些配置。我们先在项目根目录下创建nginx文件夹,然后新建文件:default.conf,填入以下内容:

配置文件的意思就是,启动这个容器里,是访问的首页是usr/share/nginx/html下的index.html文件.

5. 配置Dockerfile文件

  • 自定义构建镜像的时候基于Dockerfile来构建。
  • FROM nginx 命令的意思该镜像是基于 nginx:latest 镜像而构建的。
  • COPY dist/ /usr/share/nginx/html/ 命令的意思是将项目根目录下dist文件夹下的所有文件复制到镜像中 /usr/share/nginx/html/ 目录下。
  • COPY nginx/default.conf /etc/nginx/conf.d/default.conf 命令的意思是将nginx目录下的default.conf 复制到 etc/nginx/conf.d/default.conf,用本地的 default.conf 配置来替换nginx镜像里的默认配置。

这里有个细节要注意,就是文件里的复制命令,如果你不小心写成了

COPY dist/* /usr/share/nginx/html/

多了一个星号,那么Docker会把你文件夹下的文件平铺开来,忽略掉你的目录结构,所以需要注意,不能带*号。

6. 构建WEB应用的镜像

在根目录下,也就是Dockerfile文件的同一级目录,运行命令构建镜像。

myvueapp是命名的镜像名称,注意,名称的后面还有一个点 .,而且名称只能是小写哦。

我们可以查看一下我们的镜像:

现在可以看到刚才我们构建的镜像myvueapp了。

7. 启动容器

  • docker run 基于镜像启动一个容器-p
  • 3000:80 端口映射,将宿主的3000端口映射到容器的80端口
  • -d 后台方式运行--name 容器名

然后我们就可以通过http://{ip}:3000就可以访问到我们的WEB应用了。若无法访问,则查看一下是不是防火墙未开放这个端口.

8. 查看、停止、删除

查看docker进程

这里可以看到CONTAINER ID,然后要停止进程的话:

删除容器

查看镜像

删除镜像

好了,简单的Docker部署WEB应用就介绍到这里了。

标签:

给我留言

Copyright © 前端面试题 保留所有权利.   Theme  Ality 桂ICP备17012235号-1

用户登录