客户要求私有化部署,只是简单熟悉docker命令,很多东西不了解,踩了一些坑,所以记录一下。
(1)克隆devops
(2)Docker注册表,这次用的是华为云镜像服务
(3)更改Docker注册表服务连接
(4)修改命名空间
(5)保存和排队
(6)排队失败,上传本地打包文件,然后打包
首先本地编译
# 安装
npm install
# 正式环境
ng build --project=appName --configuration=production --prod
# 测试环境
ng build --project=appName --configuration=uat --prod
上传打包文件
线上打包,禁用build,直接打包
(7)准备docker打包命令,命名为run_docker_container.sh
注意:脚本文件的行结尾格式修改为(LF),如果是(CRLF)格式会报错
resources:
- repo: self
queue:
name: Default
#生成管道引用名为“docker images -a | grep "cost-report-dexing" | awk '{print $3}'”的未定义变量。创建或编辑此 YAML 文件的生成管道,定义“变量”选项卡上的变量。请参阅 https://go.microsoft.com/fwlink/?linkid=865972
#生成管道引用名为“docker images -a | grep "cost-report-dexing" | awk '{print $3}'”的未定义变量。创建或编辑此 YAML 文件的生成管道,定义“变量”选项卡上的变量。请参阅 https://go.microsoft.com/fwlink/?linkid=865972
steps:
- task: Docker@1
displayName: 'Build an image'
inputs:
containerregistrytype: 'Container Registry'
dockerRegistryEndpoint: 'registry-huawei'
dockerFile: Cost.Report/Dockerfile
imageName: 'ns-nxin/cost-report-dexing:$(Build.BuildId)'
- task: Docker@1
displayName: 'Push an image'
inputs:
containerregistrytype: 'Container Registry'
dockerRegistryEndpoint: 'registry-huawei'
command: 'Push an image'
imageName: 'ns-nxin/cost-report-dexing:$(Build.BuildId)'
- script: |
currimages=$(docker images -a | grep "cost-report-dexing" | awk '{print $3}')
if [ "${currimages}" != "" ]; then
docker rmi -f $(docker images -a | grep "cost-report-dexing" | awk '{print $3}')
fi
displayName: '命令行脚本'
(8)登录华为云Docker镜像服务
如果已登录,不需要再登录了
docker login -u 用户名 -p 密码 服务器
(9)run_docker_container.sh拷贝到服务器
(10)run_docker_container.sh文件授权权限
chmod u+x ./run_docker_container.sh
(11)执行run_docker_container.sh文件
./run_docker_container.sh 名称 序列号 正式环境 端口 地址
名称dbn-dx-purchase-apply-web
序列号:79457
正式环境:production
端口:与之前保持一直9500
地址:服务所在地址 192.168.100.57
完整命令:
./run_docker_container.sh 容器名称 序列号 环境 端口 IP
# docker 常用命令
# 查看镜像
docker images
# 删除镜像
docker rmi 镜像ID
# 停止容器
docker stop 容器ID
# 删除容器
docker rm 容器ID
# 删除镜像
docker rmi repository:tag
# 进入容器
docker exec -it 容器名 sh
# 退出容器
exit
执行结果
(12)创建一个分支用于部署
# 创建分支
git branch 分支名称
# 切换分支
git checkout 分支名称
# 切换分支
git push origin 分支名称
提交打包文件
打包文件要全部提交,检查.gitignore
包括忽略文件
(13)后端部署,创建分支
git branch 分支名称
git checkout 分支名称
git push origin 分支名称
(14)修改配置文件
修改域名
修改密匙
(15)保存和排队
修改为刚创建的分支
(16)获取序列号
(17)执行,剩下操作基本和前端一致
./run_docker_container.sh 服务名称 序列号 环境 端口 IP