概述
首先,需要到阿里云的官网租一个云服务器,至于域名是否需要就看你的需要了,我的服务器配置如下图所示:
还需要准备好xshell6和winscp这两个软件,最好花点时间去熟悉下docker命令和vim。另外,下面所填写的IP是阿里云控制台上显示的公有IP不是私有IP。
docker学习资源:
docker菜鸟:http://www.runoob.com/docker/docker-tutorial.html
docker文档:https://docs.docker-cn.com/
vim学习资源:
vim菜鸟:http://www.runoob.com/linux/linux-vim.html
xshell6:链接:https://pan.baidu.com/s/13feRI9m_bMPsKEhfGpElUQ 密码:tads
winscp:链接:https://pan.baidu.com/s/1DGEvse-TGVJRqF5mBzrPSg 密码:bbgj
一、安装docker(CE版)
打开xshell6,右键“所有会话”,在弹出菜单中选择新建会话,填上会话名字,云服务器主机的ip
然后点击用户身份验证,填好账号和密码并连接
1、安装一些必要的工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、更新yum缓存
sudo yum makecache fast
4、安装docker-ce版
sudo yum -y install docker-ce
5、启动docker后台服务
sudo systemctl start docker
6、测试运行
docker run hello-world
二、安装mysql镜像(建议与你本地安装的mysql版本相一致)
1、下载mysql镜像(5.7版)
docker pull mysql:5.7
2、运行容器
docker run -p 3306:3306 --name mysql -v /root/conf:/etc/mysql/conf.d -v /root/data:/var/lib/mysql -v /root/logs:/logs -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
- -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
- --name mysql : 容器的名字
- -v /root/conf:/etc/mysql/conf.d:将目录/root/conf/my.conf挂在到容器的 /etc/mysql/my.cnf
- -v /root/data:/var/lib/mysql : 将目录/root/data挂在到容器的/var/lib/mysql,本地数据库文件夹就是上传到/root/data目录下
- -v /root/logs:/logs : 将目录/root/logs挂载到容器的/logs
- -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码
通过命令docker inspect mysql查看mysql容器的配置信息,下图是部分截图
3、进入mysql容器(exit命令可以退出容器)
docker exec -it mysql /bin/bash
4、进入mysql命令行界面
mysql -u root -p
回车后输入密码即可,密码是步骤2所设置的--123456
此界面就可以使用mysql命令行了,可以使用show命令查看默认的数据库有哪些,键入exit即可退出
5、打开winscp,点击新建站点,输入IP、账号、密码,然后登录,此软件是用来上传文件到与服务器的
winscp登录后界面分为两部分,左边是本地的文件,可以从这里选择文件进行上传;右边是云服务器的目录,也可以将你需要上传的文件直接粘贴到你想要上传的目录中即可实现文件上传
6、去到本地mysql的安装目录下的data目录,将数据库的文件夹(以book_stores为例),粘贴到云服务器的/root/data目录下
7、重启mysql容器后,使用命令docker exec -it mysql /bin/bash进入容器,然后进入mysql命令行界面mysql -u root -p,依次执行以下命令
- show databases; --显示所有数据库
- use book_stores; --选择book_stores数据库
- show tables; --显示book_stores数据库下的所有表
8、执行select * from big_img;命令,如果能够把表里的数据全部查询出来,就无需下面的操作了,下图是查询失败的
见步骤6中的截图,将本地的ibdata1文件通过winscp上传到/root/data目录下,直接将原来的ibdata1文件覆盖掉,使用exit命令,退出mysql界面和mysql容器,重启mysql容器docker restart mysql,然后进入mysql容器,再进入mysql命令行界面,执行以下命令
- use book_stores;
- select * from big_img;
9、步骤8中的截图中出现了中文乱码,如果没有出现此问题,可以忽略此步骤
- 在本地新建好my.cnf文件,并将以下内容粘贴进去
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
- 用winscp将my.cnf文件上传到云服务器的/root/conf目录下,然后按照步骤8的操作重新进入mysql命令行界面,再次执行select语句
到这里,mysql的部署就完成了
三、安装Tomcat镜像(最新版的)
1、下载最新版的tomcat镜像
docker pull tomcat --默认是最新版的
2、运行容器
docker run --name tomcat -p 80:8080 -v /root/javaweb:/usr/local/tomcat/webapps --link mysql:db -d tomcat
- --name tomcat : 容器的名字
- -p 80:8080 : 将tomcat容器的8080端口映射到主机的80端口
- -v /root/javaweb:/usr/local/tomcat/webapps : 将容器的目录/usr/local/tomcat/webapps映射到主机的目录/root/javaweb,上传的Javaweb项目打包好仍在这(/root/javaweb)就行了
- --link mysql:db : 与mysql容器建立起连接,否则,在发起连接请求时,会出现mysql拒绝连接的错误,而db是mysql容器IP的别名,那么在java代码中就不能使用localhost了,而是db
可以利用docker inspect tomcat命令查看其配置信息,不截图了
3、修改java代码
4、在eclipse中将项目打包成war,然后用winscp上传到/root/javaweb目录下
右键需要打包的项目->Export->WAP file->按提示操作
上传文件,扔到/root/javaweb目录下就行了
5、测试运行
示例:http://120.77.85.99/MyStore/BookStores/index.html
如果页面能正常显示,操作也正常,那就表示成功了
四、绑定域名
需要登录阿里云,去到域名控制台,将云解析配置好,然后将IP改成域名,重新运行,页面能访问就表示成功了,端口80默认是可以省略,即域名后无需加端口,除非所映射的主机端口不是80
示例:http://jw.901studio.cn/MyStore/BookStores/index.html