项目部署流程
1.从git上获得项目的zip包
2.进入项目的文件夹下,下载依赖包,并执行(适用前端代码,后端代码跳过此步)
npm install
npm run
3.进入dockerfile所在文件夹下,生成文件的docker镜像,并且修改镜像tag
docker build -t bot-explain-manager:v1.0 .
#注意最后有个 . 代表路径,不能遗漏了
docker tag bot-explain-manager:v1.0 80.68.64.xxx:xxxx/application/bot-explain-manager:v1.0
#前面为原来的镜像名,后面为修改后的镜像名,一定要带上版本号。
#80.68.64.xxx:xxxx镜像仓库的端口号,便于后面上传镜像仓库(如harbor)
docker images
#查看现有镜像
4.将镜像上传镜像仓库
先修改配置文件,配置私有仓库,不然无法访问仓库
vim /etc/docker/daemon.json
# 添加配置
"insecure-registries": [
"192.xxx.xx.135"
]
#重启docker
systemctl restart docker
#登入镜像仓库
docker login 192.xxx.xx.135
#docker push上传镜像
docker push 80.68.64.xxx:xxxx/application/bot-explain-manager:v1.0
5.连接部署服务器
#ssh连接服务器,需要密码
sudo ssh -p 22 root@124.xx.xx.237
6.在部署的服务器上拉取镜像
同第四步:先修改配置文件,配置私有仓库,添加配置,重启docker,登入镜像仓库
#docker pull拉取镜像
docker pull 80.68.64.xxx:xxxx/application/bot-explain-manager:v1.0
7.启动容器
#注意docker run可能遇到问题
#1.前端文件
#-d保证后台运行,-p指明端口号
#-p 小写p表示docker会选择一个具体的宿主机端口映射到容器内部开放的网络端口上。
#-P 大写P表示docker会随机选择一个宿主机端口映射到容器内部开放的网络端口上。
#宿主机的一个端口只能映射到容器内部的某一个端口上,比如:8080->80之后,就不能8080->81
#容器内部的某个端口可以被宿主机的多个端口映射,比如:8080->80,8090->80,8099->80
docker run -d -p xx:xxx 80.68.64.xxx:xxxx/application/bot-explain-manager:v1.0
#2.后端文件
#最后加上bin/sh防止后台认为容器无任务,,将容器终止
docker run -d -it -p xx:xxx 80.68.64.xxx:xxxx/application/bot-explain-manager:v1.0 bin/sh
#检查容器是否生成
docker ps
docker ps -a
8.修改配置文件
#进入容器
docker exec -it containerID /bin/bash
#安装vim,便于直接在容器内修改文件
https://www.cnblogs.com/adawoo/p/13949419.html #很完整,可参考
#修改完后重启容器
docker restart containerName