当前我们开发的服务基本都是云原生的服务,都跑在容器中,在开发过程中,想更换二进制文件调测就相当麻烦了,今天写了一个脚本,供大家参考
#!/bin/bash
set -ex
appName="testApp"
appPath="home/${appName}"
containerID=$(docker ps | grep '${appName}' | grep -v pause |awk '{ print $1 }')
md5sum ${appPath}
docker cp ${appPath} $containerID:/home/service/
docker exec -it -u root $containerID /bin/bash -c 'cd /home/service/ && chown -R service:servicegroup {appName} && chmod a+x {appName} && setcap CAP_NET_BIND_SERVICE=+eip {appName} && md5sum {appName}'
echo "refresh success"
docker restart ${containerID}
基本逻辑就是使用docker cp命令把host机器上的文件拷贝到容器中,然后给他更换权限。最后重启容器即可。