前面学习了 docker 的命令和实际的用法,现在来实战一下。编排一个服务,也就是项目部署。

目前我们在一个闭源环境下工作,介绍一些工作流程和部署项目的方法。

该工作流程比较特殊

所谓闭源环境就是

  • 没有网络,客户机没有链接外网。
  • 不能使用U盘连接客户机,因为那是涉密机器。
  • 我们自己的电脑没有限制,可以连接外网,我们连接的自己的热点。

于是,我们所做的修改需要做成镜像、刻成光盘,然后拷贝到客户机,上传到服务器,然后部署,部署完成后,最后测试修改内容是否符合预期。

项目部署

本机操作

1. 发布镜像

  • 代码编写完成,先 npm run build 编译成功,确保代码能通过编译检测
  • 保证登录了 docker,然后运行 sh 脚本,一般位于 docker 目录下,进而发布镜像
  • 如果 sh 脚本中没有 docker push 命令,则需要另外运行该命令,将其发布到 docker hub

2. 导出镜像

  • 如果是导出别人的镜像,则需要先拉取镜像 docker pull imageName
  • 导出镜像 docker save url/<imageName>:<tagName> > <imageName>:<tagName>

这样就在当前目录导出了该镜像

3. 刻盘

将上面的镜像文件拷贝到光盘中,刻录,等待刻录完成。

客户电脑操作

4. 将镜像上传到服务器

  1. 在客户机上新建目录存放光盘中的镜像文件,新建的文件夹最好包含日期和项目名,如 20191105_biaozu,这么做的目的是备份镜像文件。同时也为下一步将文件拷贝到服务器作准备。
  2. 将 20191105_biaozu 中的镜像文件拷贝到服务器目录 /../images/<projectName>

将光盘中的文件拷贝到客户硬盘,然后再将客户硬盘里的文件拷贝到服务器所花费的时间要少于单独从光盘拷贝文件到服务器。

服务器操作

5. 导入镜像

  1. 进入到拷贝镜像的服务器目录,为了好说明,称为镜像目录。实际上镜像可以放到任何地方,只要在保证在服务器上了,就能保证是正确的。如: data/datagrand/images/bizozu_images
  2. 命令 ll 查看该目录下是否有刚导入的镜像文件,同时确认镜像名 <imageName>和标签 <tagName>
  3. 将拷贝到服务器的镜像导入,在包含镜像的目录下执行命令 docker load -i <imageName>:<tagName>,这个命令是 save 反向操作。在本地将我们本地仓库里面的镜像保存(导出)到我们指定的目录。在服务器上,将镜像导入到指定的目录。

导入镜像后可以通过命令docker images|grep <imageName>查看指定镜像的信息,确保镜像已经导入成功

6. 更改镜像名

  1. 进入到部署目录,如:data/datagrand/images/bizozu_deploy
  2. 更改 docker-compose.yml,将里面的 image 属性(所有有改动的镜像)改成导入的镜像名。

7. 删除容器、镜像

使用命令 docker-compose down 删除容器/镜像

8. 启动容器、镜像

使用命令 docker-compose up 启动容器/镜像

删除容器然后启动容器可以使用 docker-compose restart 重启,一步完成,但是该命令不会对修改的 docker-compose.yml 文件生效。

docker-compose down 与 docker-compose up 能够重启镜像,并对修改的 docker-compose.yml 生效。

可用命令
docker images|grep <imageName> 查看指定容器的信息
ll 列出所有的文件和目录,包含文件最后修改时间、文件大小等信息,并且每个每一项换行显示

docker 实战-项目部署的更多相关文章

  1. 实战项目部署应用到kubernetes流程(jenkins+docker+k8s)

    说明 通过jenkins构建java应用程序发布到k8s集群中 本文已一个大数据的java项目来演示构建部署过程 支持发布和回滚 支持一套模板应用不同项目 k8s基础准备 创建项目名称空间 [root ...

  2. Ubuntu中安装jenkins+docker,实现项目部署

    本人对于linux系统是个小白,恰逢公司新框架需要docker+jenkins部署项目,所以通过同事口述+一顿乱查,终于实现在虚拟机上搭建的ubuntu系统中 实现jenkins +docker 自动 ...

  3. docker打包项目部署

    1.首先在本地安装docker,步骤可参考https://www.cnblogs.com/conswin/p/11055853.html 2.在对应项目目录下增加Dockerfile文件,其内容可参考 ...

  4. Docker实战 | 第二篇:IDEA集成Docker插件实现一键自动打包部署微服务项目,一劳永逸的技术手段值得一试

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

  5. docker实战部署Javaweb项目

    一.部署环境说明 docker服务版本:version 18.09.0nginx服务版本:version: nginx/1.15.10redis服务版本:version: redis/5.0.3tom ...

  6. 云计算Docker全面项目实战(Maven+Jenkins、日志管理ELK、WordPress博客镜像)

    2013年,云计算领域从此多了一个名词“Docker”.以轻量著称,更好的去解决应用打包和部署.之前我们一直在构建Iaas,但通过Iaas去实现统一功  能还是相当复杂得,并且维护复杂.将特殊性封装到 ...

  7. ASP.NET Core 实战:使用 Docker 容器化部署 ASP.NET Core + MySQL + Nginx

    一.前言 在之前的文章(ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路)中,我介绍了如何在 Linux 环境中安装 .NET Core SDK / .NET Core ...

  8. .NET Core实战项目之CMS 第十七章 CMS网站系统的部署

    目前我们的.NET Core实战项目之CMS系列教程基本走到尾声了,通过这一系列的学习你应该能够轻松应对.NET Core的日常开发了!当然这个CMS系统的一些逻辑处理还需要优化,如没有引入日志组件以 ...

  9. Docker Gitlab CI 部署 Spring Boot 项目

    目前在学习这一块的内容,但是可能每个人环境都不同,导致找不到一篇博客能够完全操作下来没有错误的,所以自己也写一下,记录一下整个搭建的过程. Docker 的安装这里就不赘述了,基本上几行命令都可以了, ...

随机推荐

  1. 第六次作业--static关键字、对象

    ##题目一 ##Computer package Train.Method.TeachDemo.Thread.Fuction; /** * 求n的阶乘算法 * @author 喵 * @date 20 ...

  2. 10 Unit Testing and Automation Tools and Libraries Java Programmers Should Learn

    转自:https://javarevisited.blogspot.com/2018/01/10-unit-testing-and-integration-tools-for-java-program ...

  3. [PHP]Laravel无法使用COOKIE和SESSION的解决方法

    COOKIE和SESSION的具体使用百度和官方文档上都有. 但是,文档里没有说明必须经过相应的中间件才能使用,百度搜索结果都是彼此copy的bullshit!!! 其实最终解决办法很简单,完全不是网 ...

  4. 鸿蒙OS与微内核

    目前主流面向个人端操作系统都不是像鸿蒙一样采用微内核的,或许在这些操作系统上诞生时面对的需求场景用微内核是行不通的.但在当前场景下是不是能走通要实际验证才知道.面对当前操作系统已成熟的市场生态.专利技 ...

  5. nginx 反向代理之 proxy_set_header

    proxy_set_header用来设定被代理服务器接收到的header信息. 语法:proxy_set_header field value; field :为要更改的项目,也可以理解为变量的名字, ...

  6. linux高性能服务器编程 (三) --TCP协议详解

    第三章 IP协议详解 TCP协议是TCP/IP协议族中的另外一个重要的协议,与IP协议相比,TCP协议更高进应用层.一些重要的socket选项都和TCP协议相关.这一章主要从如下方面学习: 1)TCP ...

  7. shell脚本获取传入参数的个数

    ts.sh #!/bin/bash echo $# 输出 [root@redhat6 ~]# ./ts.sh para1 [root@redhat6 ~]# ./ts.sh para1 para2 [ ...

  8. R语言中的管道操作符 %>% %T>% %$% %<>%

    magrittr 包的官网 https://magrittr.tidyverse.org/ magrittr 包的 github 主页 https://github.com/tidyverse/mag ...

  9. 设计模式概要 & 六原则一法则

    参考文章 http://blog.csdn.net/sinat_26342009/article/details/46419873 继承vs组合:http://www.cnblogs.com/feic ...

  10. 线程:Java中wait、notify、notifyAll使用详解

    基础知识 首先我们需要知道,这几个都是Object对象的方法.换言之,Java中所有的对象都有这些方法. public final native void notify(); public final ...