由于 苦“X”/(ㄒoㄒ)/~~实习中,凑不够续租云服务器的月费迫不得已只能选择在自己电脑装一个Linux虚拟机来学习用Docker 部署简单的项目,由于VMware这个软件是之前为了上课就已经装过了,这里就不介绍虚拟机的安装教程了,需要的话可以自行去查下度娘自己安装一个,很多大佬的安装教程都很详细的,给第一次安装或接触虚拟机的朋友的小建议,记得在安装的时候勾选上GUI界面的选项……
这里放上阿里云的Cent OS 7镜像的下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/
几个版本都有所不同,可以度娘一下几个版本都有哪些区别,学习的话下载红框这一个就可以了。
虚拟机的Linux环境部署好之后,咱们进入正题
Docker 官方文档地址: https://docs.docker.com/engine/install/centos/
Docker Hub地址(存放镜像的仓库,类似于Github、Gitee):https://hub.docker.com/
根据官网的文档,第一步卸载旧版本(第一次安装的话这步骤可有可无)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装Docker引擎前,设置一下Docker Repository
sudo yum install -y yum-utils
由于官方是国外的,后续pull镜像的时候会比较慢,建议repo的地址配置成阿里云的地址
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 使用下面这个
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装 Docker Engine
此命令是可以选择版本安装的,可参考官方文档,这里默认最新
sudo yum install docker-ce docker-ce-cli containerd.io
期间需要输入y来确认安装一些包,一路填y即可。
顺利安装之后,可以配置一下阿里云的容器镜像加速
# 创建文件夹
sudo mkdir -p /etc/docker
# 修改配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://(这里替换成自己的,访问下面的镜像加速地址获取).mirror.aliyuncs.com"]
}
EOF
# 重新加载
sudo systemctl daemon-reload
# 开启Docker
sudo systemctl restart docker
阿里云镜像加速器:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
可以用Docker试着跑一下Hello World,出现如下内容,就证明docker运行成功了,终于成功一大半啦!!!!
注意:本地的服务器需要查看一下防火墙是否开启了
# 查看防火墙的状态(running 表示已经开启)
firewall-cmd --state
# 如果没有开启,建议输入下面的命令开启一下
systemctl start firewalld.service
# 然后开放部分端口,这里开放几个用到的即可
# Http
firewall-cmd --zone=public --add-port=80/tcp --permanent
# tomcat
firewall-cmd --zone=public --add-port=8080/tcp --permanent
# mysql
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 端口开放后 重新加载防火墙
firewall-cmd --reload
# 查看开放端口列表
firewall-cmd --list-ports
# 从仓库查询MySQL镜像
docker search mysql
# 镜像存在即拉取
docker pull mysql:5.7
# 运行MySQL -d:后台运行
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
进入MySQL容器内部,exit可以退出容器
docker exec -it 容器的id /bin/bash
能看到 databases的信息即表示MySQL安装成功了
接下来用本地电脑的数据库图形工具连接VMware虚拟机上的MySQL容器
连接成功就可以查看到虚拟机上MySQL容器的库表了。
在打包之前先将配置文件application.yml的数据源url的localhost更改为上面查询到的IP地址,数据库的密码也要跟虚拟机容器上的对应上。
确保自己的项目是正常能跑起来,有时候打包不成功是因为测试类有Bug导致的,可以去检查一下,度娘上很多打包失败的问题是通过跳过测试去解决的,这里我不建议你们这么做,如果上线出Bug就祭天了!!
在虚拟机创建一个文件夹存放jar包
mkdir /home/docker
路径切换到docker目录下,编写Dockerfile
vim Dockerfile
进入编辑框,输入i或o进行写入数据
FROM java:8
ADD product-0.0.1-SNAPSHOT.jar /product.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/product.jar"]
保存编辑内容并退出:点击Esc,输入: wq 回车
在docker目录下 执行命令(注意末尾还有个小点 . 哈)
docker build -t product:1.0 .
# product: 打包的镜像名称
# 1.0:版本号
# . :当前目录
镜像已经有了,接下来运行即可
docker run --name product -d -p 8080:8080 product:1.0
最后通过浏览器(局域网内)访问即可
运行下图中命令可以查看项目日志
如果想外网访问到路由地址,可以采用内网穿透的工具,比如花生壳之类的,可以去试试。
特此记录一下自己部署docker运行项目jar包的一些操作流程,有什么不对,不好的地方望大家随时指出,一起学习。