腾讯云服务器Ubuntu在docker部署springboot+mysql
记录docker部署项目操作
1.docker运行
启动
sudo systemctl start docker
验证docker正常
sudo docker run hello-world
2.开放端口
以上结果表示正常运行,不行就得自己配置了
ufw disable //关闭防火墙
ufw enable //开启防火墙
ufw status //查看状态
开放端口
ufw allow 80xx
如果这里不行的话可能需要自行用iptables命令去设置规则
云服务器设置安全组
开放你的数据库端口(mysql3306)和项目接口所在端口
3.docker安装mysql
docker pull mysql
运行mysql,开放的端口是3306,映射到3306(前者是映射的端口),密码是123456, -d是后台运行
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
可以用这个代码进入mysql查看是否运行成功
docker exec -it 容器的id /bin/bash
之后对数据库的操作可以用navicat进行远程连接
之后可以把已有数据库导入或者新建查询
4.项目打包
修改数据库地址为服务器所在ip
利用maven的package打包,生成target文件夹
里面有个xxxxx-0.0.1-SNAPSHOT.jar则是我们要的文件,名字可以改为XXX
在服务器里你的项目文件夹里
创建Dockerfile
FROM java:8 ADD XXX-0.0.1-SNAPSHOT.jar /XXX.jar EXPOSE 8080 ENTRYPOINT ["java","-jar","/XXX.jar"]
代码解释
#注意,docker命令全部大写,这是规定。 # From 关键字表示,jar包依赖的环境。java:8 相当于jdk1.8 FROM java:8 #ADD命令 # XXX-0.0.1-SNAPSHOT.jar:这是你上传jar包的名称。 # /XXX.jar:这是自定义的名称。但是注意要有之前的/ ADD XXX-0.0.1-SNAPSHOT.jar /XXX.jar #MAINTAINER 作者名称。可以删除不写。 MAINTAINER zhangxiaosan #EXPOSE 项目暴露的端口号 EXPOSE 8080 #/blog.jar此处的名称要和ADD命令后面的一样。 ENTRYPOINT ["java","-jar","/XXX.jar"]
我用的SecureCRT 8.3链接服务器,按rz上传打包文件 XXX-0.0.1-SNAPSHOT.jar
目录结构为
Project{Dockerfile, XXX-0.0.1-SNAPSHOT.jar }
5.部署在docker
创建镜像
docker build -t XXX:1.0 .
说明: XXX 代表要打包成的镜像名称。按照自己实际情况写。 :1.0 代表版本号,可以不写则默认为latest . 代表为当前目录。这就是为什么一直在步骤一文件夹中进行操作,并且Dockerfile在此文件夹中的原因。 若之前Dockerfile不在步骤一的文件夹中 则需要指定到对应的地址。
查看镜像
docker images
运行镜像,创建容器
docker run --name XXXX -d -it -p 8080:8080 XXX:1.0
说明: XXXX: 自定义容器名字 -d: 后台运行 -i 表示交互式的,表示[cmd]是一个有用户输入的程序,比如/bin/bash 和 python 等等。 -t 产生一个终端 -p 映射端口 a:b,b映射到a
XXX:1.0 镜像
查看容器
docker ps
如果容器退出了,用以下命令查看
docker ps -a
容器退出了,多半是代码有问题,可以用命令查看
docker logs 容器名字/容器id
要删除容器要先停止
docker stop XXX docker rm XXX
再删除镜像
docker rmi XXX
查看容器正常运行就可以通过ip或者域名访问了
参考原文的链接:(40条消息) 使用docker部署springboot项目并连接上mysql数据库_hangao233的博客-CSDN博客