1.ansible执行命令


问题:docker 容器打包后 更新应用代码不正确

一、 docker 容器打包过程解析(全程使用ansible)

  1. git 拉代码
  2. 拷贝git拉下来的代码,到中间文件夹(编译这个文件的代码)
  3. 编译中间文件夹的代码
  4. 容器打包,把代码封装到容器内,并提交

二、出现的问题

  1. 使用ansible打包后的镜像总是会出现和期望不一致的内容,但手动执行编译的镜像包又没有问题
  2. 分析编译过程,使用ansible 执行shell 命令编译的python代码会和手动执行编译的有区别(有几个py文件没有被编译,一般也没有问题),还是找不到问题
  3. 找了好多次找不到问题,最终尝试,使用ansible来执行自动化编译后面手动执行,和全手动执行对比,确认发现就是python代码没有完全编译导致的问题(代码问题这里先不管)
  4. 问题已经找到就是ansible执行编译导致代码编译不完全导致,但为什么执行同样的命令导致的编译的结果不一致呢?(编译脚本里没有用的环境变量,没有执行环境变量文件)
    最终发现,还是环境变量的问题,可能是python3自己用的了环境变量)
    结论:用ansible执行shell命令, 最后要 提前 source /etc/profile ,然后再执行自己的命令,才会于自己在命令行中执行的结果一致