最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 如何使用docker发布项目

    正文概述 掘金(Jiuto)   2021-06-29   674

    如何使用docker发布项目

    什么是docker

    背景知识

    详细版传送门:Docker 入门教程-阮一峰

    简化版:

    大家都是开发者,知道配置环境的麻烦和难处,操作系统的设置、各种库和组件的安装,以及各个版本之间的兼容问题。

    虚拟机是一种解决方案,但存在资源占用多、冗余步骤多、启动慢等缺点。

    于是发展出来另一种虚拟化技术:Linux容器(Linux Containers,LXC)。LXC不模拟完整的操作系统,而是对进程进行隔离。由于容器是进程级别的,相比虚拟机启动快、资源占用少、体积小。

    镜像和容器

    Docker 将应用程序与该程序的依赖,打包在一个文件里面,这个文件称为一个image镜像,运行镜像文件,会生成一个container容器实例。我们的程序,就在这个容器实例中运行。


    docker的一些基础命令

    docker hub是docker的镜像仓库,我们可以在docker hub上搜索我们想要的镜像,比如nginx:

    如何使用docker发布项目

    • 通过docker pull nginx命令,默认拉取最新版本的nginx镜像。在Tags列表中,我们也可以看到历史各个版本的镜像,通过:+对应版本的tagName获取指定版本的镜像。

    • docker run命令用于运行镜像,生成一个容器实例。

    • 通过docker ps -a可以查看所有容器及其运行状态。

    • docker start containName运行容器。

    • docker restart containName重启容器。

    • docker stop containName停止运行容器。

    • docker logs查看容器输出日志。

    • docker rm删除指定容器。

    • docker rmi删除指定镜像。

    docker 命令列表


    什么是Dockerfile

    Dockerfile是一个文本文件,包含了配置一个image镜像所有可以调用的命令。

    这话其实有点歧义,实际上,并不是说它真的包含每一个命令,而是说当我们想要生成一个image镜像时,Docker会根据该文件中指定的命令,来生成二进制的 image 文件。

    举一个栗子?

    场景:在docker中运行mysql容器,希望免去初始化数据库的操作。

    如果我们直接docker pull mysql,然后docker run,显然没有应用到我们的init.sql文件。

    这个时候就可以写一个Dockerfile,来帮助我们构建一个想要的、直接完成初始化配置的镜像。

    步骤:夹带私货传送门:通过Dockerfile在docker中初始化mysql表

    1. 在当前docker命令行目录下,新建一个Dockerfile文件,代码如下:
    FROM mysql:5.7
    WORKDIR /docker-entrypoint-initdb.d
    ENV LANG=C.UTF-8
    ADD init.sql .
    

    ​ 其中,init.sql即mysql初始化需要执行的文件,需和Dockerfile文件在同一目录。

    ​ 这些命令是什么意思呢?大意就是基于mysql:5.7这个镜像,指定工作路径,设定环境变量,增加文件到指定目录。

    1. 在docker中通过docker pull mysql:5.7(以5.7版本为例)拉取mysql镜像,完成后通过docker images可查看image镜像列表。

    2. 在docker当前目录(Dockerfile所在目录)下执行docker build -t mysql:5.7task .构建tag名为"5.7task"的mysql镜像。

    3. 执行docker run --name mysqltask -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7task

    ​ 运行名为"mysqltask"的容器,--name指定容器名,-p容器内部端口映射主机端口,-e设置环境变量,-d后台运行容器。

    1. ...

      后面的步骤就不说了,到这里我们已经知道Dockerfile是什么了。


    如何用docker运行一个前端项目

    这个问题其实很简单,和docker没有太大关系,换一个nginx容器罢了。

    将前端打包好的资源文件映射到容器的/usr/share/nginx/html/,再做好配置文件映射即可。

    大家可以参考这篇文章,传送门:Nginx 容器教程-阮一峰


    我曾使用过的自动化部署流程

    我曾参与过一个使用coding进行管理的项目,这边简单介绍一下这个项目是如何完成自动化部署的。

    简单讲讲用coding持续集成

    coding提供了很多构建计划的模版,可以直接使用,也可以自定义。

    如何使用docker发布项目

    coding的持续集成帮我们做了哪些?

    实际上,我们除了新增一个Dockerfile和构建节点,其余都由coding完成。

    如何使用docker发布项目

    这个Dockerfile就不需要解释了,看一看构建的节点做了什么。

    如何使用docker发布项目

    如何使用docker发布项目

    在本地完成手动部署?

    自动化部署工具(by Ken-ding)

    在已完成镜像的前提下,这个工具使得我们只要在本地运行npm run deploy即可完成更新部署。

    步骤

    1. 首先当然是安装工具依赖

    2. 在项目根目录创建一个deploy.js文件,传入配置

      如何使用docker发布项目

    3. package.json中配置deploy命令:

      "scripts": {
          "deploy": "node deploy.js"
      },
      

    dc-deploy做了什么?

    如何使用docker发布项目

    根据传入的配置完成打包-压缩-连接服务器-删除远程文件-上次文件-解压文件-查找容器。前面就不看了,看一下查找容器这一步。

    如何使用docker发布项目

    通过docker ps查找容器,-q只显示容器编号,-f根据条件过滤显示的内容。

    找到容器执行docker restart,没找到docker run --name ${containName} -d -p ${exportPort}:80 -v ${webDir}:/usr/share/nginx/html -v ${webRootDir}/conf/nginx.conf:/etc/nginx/nginx.conf -v ${webRootDir}/conf.d:/etc/nginx/conf.d -v ${webRootDir}/logs:/var/log/nginx nginx创建新容器。


    结束语

    这篇文章暂时就这样结束了,当然目的不是给大家介绍coding或是夹带私货,这些工具都不是重点,介绍他们的目的,只是为了让大家明白,用docker发布项目,本质上都是一样的:

    不过是创建镜像并运行容器实例罢了。


    起源地下载网 » 如何使用docker发布项目

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元