一、前言
本篇以JAVA项目为例,概括项目从打包打部署到docker所有步骤及命令。
二、项目打包
先将项目打包为jar包,通过xftp把jar包上传至(Linux)服务器目录。
三、创建DockerFile文件
- 在jar包所在的位置创建一个Dockerfile 文件,要保证jar包和Dockerfile 在同一个目录下。
- 编辑DockerFile配置文件。
四、将镜像上传镜像仓库
1.生成文件的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
#查看现有镜像
2.将镜像上传镜像仓库
#先修改配置文件,配置私有仓库,不然无法访问仓库
vim /etc/docker/daemon.json
# 添加配置
"insecure-registries": [
"192.xxx.xx.135"
]
3.重启docker
#重启docker
systemctl restart docker
4.登入仓库并将镜像上传
#登入镜像仓库
docker login 192.xxx.xx.XXX
#docker push上传镜像
docker push 80.68.64.xxx:xxxx/application/bot-explain-manager:v1.0
五、在服务器上拉取镜像
1.连接部署服务器
#ssh连接服务器,需要密码
sudo ssh -p 22 root@124.xx.xx.237
2.在部署的服务器上拉取镜像
同第四步:先修改配置文件,配置私有仓库,添加配置,重启docker,登入镜像仓库
#docker pull拉取镜像
docker pull 80.68.64.xxx:xxxx/application/bot-explain-manager:v1.0
3.启动容器
#注意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
4.修改配置文件
#进入容器
docker exec -it containerID /bin/bash
#安装vim,便于直接在容器内修改文件
https://www.cnblogs.com/adawoo/p/13949419.html #很完整,可参考
#修改完后重启容器
docker restart containerName