前面学习了 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. cpu绘图的本质:生成图片的二进制(数字)信息

    计算机中图片是用二进制数据表达的.

  2. CF1105D-Kilani and the Game-(多向bfs)

    http://codeforces.com/problemset/problem/1105/D 题意:有一片矩阵区域,一开始有多个势力比如1,2,3,4....9,从势力1开始轮流向外扩张,地图上为‘ ...

  3. jQuery--data()方法

    data() 函数用于在当前jQuery对象所匹配的所有元素上存取数据. 通过data()函数存取的数据都是临时数据,一旦页面刷新,之前存放的数据都将不复存在. 该函数属于jQuery对象(实例).如 ...

  4. 用Python 打开程序的两中方法

    1.ShellExecute函数 import win32api win32api.ShellExecute(0, 'open', 'notepad.exe', '', '', 0) # 后台执行 w ...

  5. centos7.2(一)vultr服务器购买和开通端口

    https://vultr.me/52.html 之前我们已经介绍了如何购买 Vultr 以及如何使用支付宝对 Vultr 进行充值,相关教程: VULTR 购买教程 2018 年最新图文版 VULT ...

  6. SQL注入学习

    本次实验环境用的是Xampp,搭建的sqli-labs 配置环境: 下载路径https://github.com/Audi-1/sqli-labs,下载源代码,将解压好的文件夹放在xampp\htdo ...

  7. linux高性能服务器编程 (五) --Linux网络编程基础api

    第五章 Linux网络编程基础api 1.主机字节序和网络字节序 字节序是指整数在内存中保存的顺序.字节序分为大端字节序.小端字节序. 大端字节序:一个整数的高位字节数据存放在内存的低地址处.低位字节 ...

  8. Java8中HashMap扩容算法小计

    Java8的HashMap扩容过程主要就是集中在resize()方法中 final Node<K,V>[] resize() { // ...省略不重要的 } 其中,当HashMap扩容完 ...

  9. elasticsearch-py 解决 too_long_frame_exception 问题

    elasticsearch-py 解决 too_long_frame_exception 问题 老大让我搞一搞数据统计,配环境时遇到个奇葩错误,记录一下,希望能帮助到某些人. 我需要安装 Elasti ...

  10. SpringBoot(3)自定义Filter

    SpringBoot自动添加了OrderedCharacterEncodingFilter和HiddenHttpMethodFilter,当然我们可以自定 义Filter. 自定义Filter需要两个 ...