一.docker中安装mysql
安装
#拉取mysql镜像,我拉取的是5.6版本,需要其他版本的可以自行拉取,注意事项未知。
docker pull mysql:5.6
#启动mysql容器
docker run -p 3306:3306 --name mysql -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
命令说明:
-p 3306:3306:将主机的3306端口映射到docker容器的3306端口。
--name mysql:运行服务名字
-v /home/mysql/conf:/etc/mysql/conf.d :将主机/home/mysql录下的conf/my.cnf 挂载到容器的 /etc/mysql/conf.d
-v /home/mysql/logs:/logs:将主机/home/mysql目录下的 logs 目录挂载到容器的 /logs。
-v /home/mysql/data:/var/lib/mysql:将主机/home/mysql目录下的data目录挂载到容器的 /var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
-d mysql:5.6:后台程序运行mysql5.6
使用window连接服务器的mysql,使用的navicat工具,注意服务器的主机ip的外网ip,云服务器的3306端口需要对外暴露,也就是配置好安全组
二.docker中安装redis
安装
#拉取redis镜像
docker pull redis:3.2
#运行redis容器
docker run -p 6379:6379 --requirepass "mypassword" -v /home/myredis/data:/data -v /home/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis:3.2 redis-server /usr/local/etc/redis/redis.conf --appendonly yes
命令说明:
--requirepass "mypassword" : 设置redis的密码
window连接redis,使用的是RedisDesktopManager管理工具连接,同样的需要配置安全组,暴露6379端口,使用外网ip连接
三.docker安装配置fastDfs
安装
拉取fastDfs镜像
docker pull delron/fastdfs #拉取最新版本
启动tracker容器
docker run -d --network=host --name tracker -v /var/fdfs/tracker:/var/fdfs -v /etc/localtime:/etc/localtime delron/fastdfs tracker
启动storage容器
docker run -d --network=host --name storage -e TRACKER_SERVER=192.168.56.1:22122 -v /var/fdfs/storage:/var/fdfs -v /etc/localtime:/etc/localtime delron/fastdfs storage
说明:
-e TRACKER_SERVER=192.168.56.1:22122 ip地址使用服务器的外网ip地址
storage的内置nginx端口是8888
可进入storage容器测试文件上传。
java使用fastDfs
pom文件中引用客户端支持
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>1.26.2</version>
</dependency>
yml中配置
# 分布式文件系统FDFS配置
fdfs:
soTimeout: 6000 #socket连接超时时长
connectTimeout: 6000 #连接tracker服务器超时时长
reqHost: 193.112.249.143 #nginx访问地址
reqPort: 8888 #nginx访问端口
thumbImage: #缩略图生成参数,可选
width: 150
height: 150
trackerList: #TrackerList参数,支持多个,我这里只有一个,如果有多个在下方加- x.x.x.x:port
193.112.249.143:22122
java上传下载工具类
public class FastDFSClientUtil {
//nginx访问地址
@Value("${fdfs.reqHost}")
private String reqHost;
//nginx访问端口
@Value("${fdfs.reqPort}")
private String reqPort;
//自动注入storage客户端
@Autowired
private FastFileStorageClient storageClient;
@Autowired
private ThumbImageConfig thumbImageConfig; //创建缩略图 , 缩略图访问有问题,暂未解决
public String uploadFile(MultipartFile file) throws IOException {
StorePath storePath = storageClient.uploadFile(file.getInputStream(),file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()),null);
String path = thumbImageConfig.getThumbImagePath(storePath.getPath()) ;
System.out.println("thumbImage :" + path); // 缩略图访问有问题,暂未解决
return getResAccessUrl(storePath);
}
public void delFile(String filePath) {
storageClient.deleteFile(filePath);
}
public InputStream download(String groupName, String path) {
InputStream ins = storageClient.downloadFile(groupName, path, new DownloadCallback<InputStream>(){
@Override
public InputStream recv(InputStream ins) throws IOException {
// 将此ins返回给上面的ins
return ins;
}}) ;
return ins ;
}
/**
* 封装文件完整URL地址
* @param storePath
* @return
*/
private String getResAccessUrl(StorePath storePath) {
String fileUrl = "http://" + reqHost + ":" + reqPort + "/" + storePath.getFullPath();
return fileUrl;
}
}
需要的服务器都安装完成了,下一步是搭建zookeeper服务器,然后部署dubbo服务了,请参考下一篇文章:zookeeper安装和dubbo服务部署