入门级-最详细的springboot dubbo分布式项目docker部署全过程(三)

一.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连接
window连接redis

三.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服务部署

发布了13 篇原创文章 · 获赞 1 · 访问量 571

猜你喜欢

转载自blog.csdn.net/weixin_38650898/article/details/104516875