亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何使用 docker compose 搭建 fastDFS文件服務(wù)器

 更新時間:2021年10月15日 10:26:28   作者:edoclin  
這篇文章主要介紹了如何使用 docker compose 搭建 fastDFS文件服務(wù)器,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

上篇文章給大家介紹了使用docker compose安裝FastDfs文件服務(wù)器的實例詳解

今天給大家介紹如何使用 docker compose 搭建 fastDFS文件服務(wù)器,內(nèi)容詳情如下所示:

平臺 :Mac M1

備注:關(guān)于 IP Address

關(guān)于 docker 的網(wǎng)絡(luò)模式,上述文中提到了 docker 的 Host 模式

如果啟動容器的時候使用host模式,那么這個容器將不會獲得一個獨(dú)立的Network Namespace,而是和宿主機(jī)共用一個 Network Namespace。容器將不會虛擬出自己的網(wǎng)卡,配置自己的 IP 等,而是使用宿主機(jī)的 IP 和端口。但是,容器的其他方面,如文件系統(tǒng)、進(jìn)程列表等還是和宿主機(jī)隔離的。

問題在于:使用宿主機(jī)的 IP 和端口的話,配置文件中 IP 填寫 localhost的話按理說能訪問到容器,然而事實上卻不行。個人理解(如果理解有問題的話煩請指正)的 IP Address填寫方法如下:

啟動 tracker 時控制臺輸出:

192.168.64.2的網(wǎng)絡(luò)為:

 

192.168.65.4的網(wǎng)絡(luò)為:

文件目錄

├── docker-compose.yaml
├── nginx
│   └── nginx.conf
├── storage
│   └── data
└── tracker
│   └── conf
│       └── client.conf
└── store_path

./docker-compose.yaml

version: "2"
services:
	fastdfs-tracker:
		hostname: fastdfs-tracker
		container_name: fastdfs-tracker
		image: season/fastdfs:1.2
		network_mode: "host"
		command: tracker
		volumes:
		  - ./tracker/data:/fastdfs/tracker/data
		  - ./tracker/conf:/etc/fdfs
	fastdfs-storage:
		hostname: fastdfs-storage
		container_name: fastdfs-storage
		image: season/fastdfs:1.2
		network_mode: "host"
		volumes:
		  - ./storage/data:/fastdfs/storage/data
		  - ./store_path:/fastdfs/store_path
		environment:
		  - TRACKER_SERVER=192.168.64.2:22122
		command: storage
		depends_on:
		  - fastdfs-tracker
	fastdfs-nginx:
		hostname: fastdfs-nginx
		container_name: fastdfs-nginx
		image: season/fastdfs:1.2
		network_mode: "host"
		volumes:
		  - ./nginx/nginx.conf:/etc/nginx/conf/nginx.conf
		  - ./store_path:/fastdfs/store_path
		environment:
		  - TRACKER_SERVER=192.168.64.2:22122
		command: nginx

./tracker/conf/client.conf

# connect timeout in seconds
# default value is 30s
connect_timeout=30
# network timeout in seconds
# default value is 30s
network_timeout=60

# the base path to store log files
base_path=/fastdfs/client

# tracker_server can ocur more than once, and tracker_server format is
#  "host:port", host can be hostname or ip address
# 需要修改此處 ip
tracker_server=192.168.64.2:22122

#standard log level as syslog, case insensitive, value list:
### emerg for emergency
### alert
### crit for critical
### error
### warn for warning
### notice
### info
### debug
log_level=info

# if use connection pool
# default value is false
# since V4.05
use_connection_pool = false

# connections whose the idle time exceeds this time will be closed
# unit: second
# default value is 3600
# since V4.05
connection_pool_max_idle_time = 3600

# if load FastDFS parameters from tracker server
# since V4.05
# default value is false
load_fdfs_parameters_from_tracker=false

# if use storage ID instead of IP address
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# default value is false
# since V4.05
use_storage_id = false

# specify storage ids filename, can use relative or absolute path
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# since V4.05
storage_ids_filename = storage_ids.conf

#HTTP settings
http.tracker_server_port=80

#use "#include" directive to include HTTP other settiongs
##include http.conf

./nginx/nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
	worker_connections  1024;
}

http {
	include       mime.types;
	default_type  application/octet-stream;

	#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
	#                  '$status $body_bytes_sent "$http_referer" '
	#                  '"$http_user_agent" "$http_x_forwarded_for"';

	#access_log  logs/access.log  main;

	sendfile        on;
	#tcp_nopush     on;

	#keepalive_timeout  0;
	keepalive_timeout  65;

	#gzip  on;

	server {
		listen       9800;
		server_name  localhost;

		#charset koi8-r;

		#access_log  logs/host.access.log  main;

		# 修改部分
		location / {
			root /fastdfs/store_path/data;
			ngx_fastdfs_module;
		}

		#error_page  404              /404.html;

		# redirect server error pages to the static page /50x.html
		#
		error_page   500 502 503 504  /50x.html;
		location = /50x.html {
			root   html;
		}
	}
}

SpringBoot 集成 fastDFS

添加依賴

<dependency>
	<groupId>com.github.tobato</groupId>
	<artifactId>fastdfs-client</artifactId>
	<version>1.27.2</version>
</dependency>

 

applicaiton.yaml

# 分布式文件系統(tǒng)配置
fdfs:
  #根據(jù)自己的ip進(jìn)行更改
  ip: 192.168.64.2
  #socket連接超時時長
  soTimeout: 1500
  connectTimeout: 600
  #支持多個
  trackerList:
    - ${fdfs.ip}:22122
  # fastDFS 中的 nginx 的 ip 和 port
  # IDEA 提示使用 https, 
  # nginx 配置 SSL 請移步:
  web-server-url: http://${fdfs.ip}:9800/

FastDFSConfig.java

@Configuration
// 導(dǎo)入FastDFS-Client組件
@Import(FdfsClientConfig.class)
// 解決jmx重復(fù)注冊bean的問題
@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
public aspect FastDFSConfig {
}

FastDFSUtil.java

@Component
public class FastDFSUtil {
    @Resource
    private FastFileStorageClient fastFileStorageClient;
    @Resource
    private FdfsWebServer fdfsWebServer;

    public String uploadFile(MultipartFile file) throws IOException {
        StorePath storePath = fastFileStorageClient.uploadFile(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()), null);
        String fullPath = storePath.getFullPath();
        getResAccessUrl(fullPath);
        return fullPath;
    }

    public String uploadFile(File file) {
        try {
            FileInputStream inputStream = new FileInputStream(file);
            StorePath storePath = fastFileStorageClient.uploadFile(inputStream, file.length(), FilenameUtils.getExtension(file.getName()), null);
            return storePath.getFullPath();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public byte[] downloadFile(String filePath) {
        StorePath storePath = StorePath.parseFromUrl(filePath);
        return fastFileStorageClient.downloadFile(storePath.getGroup(), storePath.getPath(), new DownloadByteArray());
    }

    public Boolean deleteFile(String filePath) {
        if (StringUtils.isEmpty(filePath)) {
            return false;
        }
        try {
            StorePath storePath = StorePath.parseFromUrl(filePath);
            fastFileStorageClient.deleteFile(storePath.getGroup(), storePath.getPath());
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    /**
     * 封裝文件完整 URL 地址
     *
     * @param path
     * @return
     */
    public String getResAccessUrl(String path) {
        return fdfsWebServer.getWebServerUrl() + path;
    }
}

FastDFSController.java

@RestController
@RequestMapping("/fast-dfs")
public class FastDFSController {
    /**
     * @param file
     * @return
     * @throws IOException
     */
    @PostMapping("")
    @Transactional
    public void uploadFile(MultipartFile file, String cuisineId) throws IOException {
        String s = fastDfsUtil.uploadFile(file);
        String resAccessUrl = fastDfsUtil.getResAccessUrl(s);
    }

    /**
     * @param response
     * @throws IOException
     */
    @GetMapping("")
    public void downloadFile(String filePath, HttpServletResponse response) throws IOException {
        byte[] bytes = fastDfsUtil.downloadFile(filePath);

        String[] split = filePath.split("/");
        String fileName = split[split.length - 1];
        // 設(shè)置強(qiáng)制下載不打開
        response.setContentType("application/force-download");

        fileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8);
        response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
        IOUtils.write(bytes, response.getOutputStream());
    }

    /**
     * 流媒體的方式播放視頻,只能從頭看到尾,不能手動點(diǎn)擊重新看已經(jīng)看過的內(nèi)容
     * @param filePath
     * @param response
     * @throws IOException
     */
    @GetMapping("/play")
    public void streamMedia(String filePath, HttpServletResponse response) throws IOException {
        byte[] bytes = fastDfsUtil.downloadFile(filePath);
        IOUtils.copy(new ByteArrayInputStream(bytes), response.getOutputStream());
        response.flushBuffer();
    }
}

到此這篇關(guān)于如何使用 docker compose 搭建 fastDFS文件服務(wù)器的文章就介紹到這了,更多相關(guān)docker compose 搭建 fastDFS內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解如何將docker快速升級到最新版本

    詳解如何將docker快速升級到最新版本

    最近在對區(qū)塊鏈瀏覽器調(diào)優(yōu),該區(qū)塊鏈瀏覽器就是使用docker部署的微服務(wù),在一臺新的服務(wù)器上啟動時報錯,發(fā)現(xiàn)是docker版本過低,所以本文給大家介紹了將docker快速升級到最新版本的方法,需要的朋友可以參考下
    2024-02-02
  • docker實現(xiàn)導(dǎo)出、導(dǎo)入和數(shù)據(jù)搬遷

    docker實現(xiàn)導(dǎo)出、導(dǎo)入和數(shù)據(jù)搬遷

    本篇文章主要介紹了docker實現(xiàn)導(dǎo)出、導(dǎo)入和數(shù)據(jù)搬遷,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • 鏡像倉庫?Harbor搭建和使用教程

    鏡像倉庫?Harbor搭建和使用教程

    本文給大家介紹鏡像倉庫?Harbor搭建和使用教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-01-01
  • Docker 容器編排利器Compose(起步篇)

    Docker 容器編排利器Compose(起步篇)

    這篇文章主要介紹了Docker 容器編排利器Compose(起步篇),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Docker數(shù)據(jù)卷掛載命令volume(-v)與mount的使用總結(jié)

    Docker數(shù)據(jù)卷掛載命令volume(-v)與mount的使用總結(jié)

    本文主要介紹了Docker數(shù)據(jù)卷掛載命令volume(-v)與mount的使用總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • docker images,info,-d等命令報錯的解決方法

    docker images,info,-d等命令報錯的解決方法

    最近剛接觸Docker,所以在學(xué)習(xí)的過程中出現(xiàn)了好多的問題,百度上不好找,谷歌的話,樓主不會翻墻。后來通過各方求助和細(xì)心研究解決了一些遇到的問題,現(xiàn)在將遇到的問題和解決方法分享給大家,有需要的朋友們可以參考借鑒。
    2016-11-11
  • Linux系統(tǒng)通過Docker安裝SQL?Server數(shù)據(jù)庫

    Linux系統(tǒng)通過Docker安裝SQL?Server數(shù)據(jù)庫

    這篇文章介紹了Linux系統(tǒng)通過Docker安裝SQL?Server數(shù)據(jù)庫的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Docker安裝Nginx并部署及MySQL容器構(gòu)建全過程

    Docker安裝Nginx并部署及MySQL容器構(gòu)建全過程

    眾所周知Docker是一種容器化技術(shù),可以用來快速部署和管理應(yīng)用程序,這篇文章主要給大家介紹了關(guān)于Docker安裝Nginx并部署及MySQL容器構(gòu)建的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • docker搭建rabbitmq集群環(huán)境的方法

    docker搭建rabbitmq集群環(huán)境的方法

    本篇文章主要介紹了docker搭建rabbitmq集群環(huán)境的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-07-07
  • docker實踐之docker-compose部署mysql方式

    docker實踐之docker-compose部署mysql方式

    這篇文章主要介紹了docker實踐之docker-compose部署mysql方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論