1、 阿里云服务器
https://promotion.aliyun.com/ntms/act/campus2018.html
(云翼计划)9.5一个月【坑爹啊,过了学生的认证。。。只能买一个月。。。】【入坑后很有可能去买ECS的云服务器。。。】
2、在服务器中安装docker
安装:wget -qO- https://get.docker.com/ | sh
启动:service docker start
3、在docker中安装java环境
docker pull java:alpine
4、在docker中安装mysql
安装:docker pull mysql
启动:docker run --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:latest
注意:如果按照这种方法来安装的mysql,默认安装的是最新的mysql。和mysql8版本开始,默认使用的密码加密方式为caching_sha2_password,而以前使用的是mysql_native_password。如果不修改,连接会报“Unable to load authentication plugin ‘caching_sha2_password’”错误。
解决方法:
a、更换mysql的驱动jar包,改为8版本以上的
b、在docker环境中进入mysql的bash环境,修改密码加密方式
1、docker exec -it mymysql bash
2、mysql -uroot -p123456
3、use mysql;
4、alter user 'root'@'localhost' identified with mysql_native_password by '123456';// 修改本地连接属性【可不用修改】
5、alter user 'root'@'%' identified with mysql_native_password by '123456';//修改远程连接属性【一定要修改】
6、重启mysql的docker docker restart mysql容器ID
至此,可以使用以前的mysql连接的驱动jar包进行连接
5、编写自己软件
本次使用的为Springboot工程。主要进行测试。
1)新建数据库:
DROP TABLE IF EXISTS `userinfo`;
CREATE TABLE `userinfo` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`uname` varchar(255) DEFAULT NULL,
`upassword` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
2)创建数据库对应的类
package cn.zy.ali.bean;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import lombok.Data;
@Entity
@Data
public class Userinfo {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
private Integer id;
private String uname;
private String upassword;
}
3)创建相应的JPA对应的实体接口,这里只是简单演示一下,所以使用JPA提供的方法就足够了
package cn.zy.ali.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import cn.zy.ali.bean.Userinfo;
public interface UerInfoRepository extends JpaRepository<Userinfo, Integer> {
}
4)创建web接口,暴露需要的服务
package cn.zy.ali.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.alibaba.fastjson.JSONObject;
import cn.zy.ali.bean.Userinfo;
import cn.zy.ali.repository.UerInfoRepository;
@RestController
@RequestMapping(value = "/ali/user")
public class UserInfoController {
@Autowired
UerInfoRepository user;
@RequestMapping(value = "/getAll", method = RequestMethod.GET)
public JSONObject getAllUsers() {
JSONObject json = new JSONObject();
json.put("code", 0);
List<Userinfo> list = user.findAll();
if (list != null && list.size() > 0) {
json.put("code", 1);
json.put("data", list);
}
return json;
}
@RequestMapping(value = "/addNew", method = RequestMethod.POST)
public JSONObject addNewUser(String uname, String upassword) {
JSONObject json = new JSONObject();
json.put("code", 0);
if (uname != null && !"".equals(uname) && upassword != null && !"".equals(upassword)) {
Userinfo userInfo = new Userinfo();
userInfo.setUname(uname);
userInfo.setUpassword(upassword);
Userinfo save = user.save(userInfo);
if (save != null) {
json.put("code", 1);
json.put("data", save);
}
}
return json;
}
}
5)启动项目,显示有postman进行测试
6)本地测试完成,打包成jar。mvn package
7)将jar包上传至阿里云服务器。
8)创建docker images
1、新建apps文件夹,在文件夹中放置刚刚的jar包和新建一个Dockerfile文件。
2、编写Dockerfile文件
3、生成images,【注意,最后一个“.”,在当前文件夹中】
docker build -t myapp .
9)查看刚刚做好的image是否成功,出现myapp则表示已经成功
docker images
10)启动我的项目
docker run --name myappdemo -p 8888:8888 -d myapp:latest
11)至此,项目已经完全部署至阿里服务器上去。但是,还需要在主机上开启远程访问的权限。
登录阿里云控制台,在实例的安全组中配置外网访问规则。
本例使用外网访问8888和3306端口。
12)从外网进行访问测试,postman进行