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