# CentOS Docker 安装
- 请参考[这篇文章][1]
## FastDFS安装
### 编写`docker-compose.yaml`
- 在/mnt/docker目录下新建 fdfs文件夹,存储所有相关文件
```bash
cd /mnt/docker
mkdir fdfs
cd fdfs
```
- 编写`docker-compose.yaml`
- 执行命令:`vim docker-compose.yml`
```bash
version: '2'
services:
tracker:
image: season/fastdfs:1.2
restart: always
volumes:
- "./tracker_data:/fastdfs/tracker/data"
environment:
TZ: "Asia/Shanghai"
network_mode: "host"
command: "tracker"
storage:
image: season/fastdfs:1.2
restart: always
volumes:
- "./storage_base_path:/fastdfs/storage/data"
- "./store_path0:/fastdfs/store_path"
- "./fdfs_conf:/fdfs_conf"
environment:
TRACKER_SERVER: "yourIp:22122"
TZ: "Asia/Shanghai"
network_mode: "host"
command: "storage"
nginx:
image: season/fastdfs:1.2
restart: always
volumes:
- "./nginx.conf:/etc/nginx/conf/nginx.conf"
- "./store_path0:/fastdfs/store_path"
environment:
TRACKER_SERVER: "yourIp:22122"
TZ: "Asia/Shanghai"
network_mode: "host"
command: "nginx"
```
### 编写 `storage.conf`
- 执行命令:`vim storage.conf`
```bash
# is this config file disabled
# false for enabled
# true for disabled
disabled=false
# the name of the group this storage server belongs to
group_name=group1
#默认组1即可,如果多个store 就写group2,一次类推
# path(disk or mount point) count, default value is 1
store_path_count=1
# store_path#, based 0, if store_path0 not exists, it's value is base_path
# the paths must be exist
store_path0=/fastdfs/store_path
#数据存储地址
#store_path1=/home/yuqing/fastdfs2
# subdir_count * subdir_count directories will be auto created under each
# store_path (disk), value can be 1 to 256, default value is 256
subdir_count_per_path=256
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
#修改为tracker地址,单机修改本机即可
tracker_server=yourIp:22122
...
...
...
# the port of the web server on this storage server
http.server_port=8888
```
### 编写`nginx.conf`
- 执行命令:`vim nginx.conf`
```bash
#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;
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 23001;
server_name localhost;
#charset koi8-r;
#缩略图需要使用插件,需要单独构建nginx镜像,此处忽略
#location /group([0-9])/M00/.*\.(gif|jpg|jpeg|png)$ {
# root /fastdfs/storage/data;
# image on;
# image_output off;
# image_jpeg_quality 75;
# image_backend off;
# image_backend_server http://baidu.com/docs/aabbc.png;
# }
# group1
location /group1/M00 {
# 文件存储目录
root /fastdfs/storage/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;
}
}
}
```
### 编辑`fdfs_conf`目录
#### 方案一
- 在`/mnt/docker/fdfs`目录下新建目录`fdfs_conf`
```bash
mkdir fdfs_conf
cd fdfs_conf
```
- 将[fdfs_conf.zip][2]下载下来后解压至`fdfs_conf`目录
```bash
unzip fdfs_conf.zip
```
- 编辑`storage.conf`
```bash
vim storage.conf
```
- 修改其中的`tracker_server=172.19.244.99:22122`为`tracker_server=yourIp:22122`
> 以上`fdfs_conf`下的文件皆为按照博主自己方案安装时的端口号配置的,如果有端口号变动,请使用方案二。
#### 方案二
- 在`/mnt/docker/fdfs`目录下新建目录`fdfs_conf`
```bash
mkdir fdfs_conf
cd fdfs_conf
```
- 复制容器内部的文件夹至宿主机内
```bash
docker cp fdfs_storage_1:/fdfs_conf/* /mnt/docker/fdfs/fdfs_conf
```
- 编辑`storage.conf
```bash
vim storage.conf
```
- 修改其中的`tracker_server=172.19.244.99:22122`为`tracker_server=yourIp:22122`
- 启动容器
```bash
docker-compsoe up -d
```
## 测试
- 进入docker
```bash
docker exec -it fdfs_storage_1 bash
```
- 进入内部`fdfs_conf`目录
```bash
cd /fdfs_conf/
```
- 测试上传
```bash
fdfs_upload_file storage.conf anti-steal.jpg
```
- 查看上传的文件
```bash
ls /fastdfs/store_path/data/00/00/
```
- 开启外网端口,博主配置的端口为`23001`
查看上传的文件`http://yourIp:23001/group1/M00/00/00/rBLcEV2kKyKAV8ugAACZsk13Smg395.jpg`
![][image-2]
## 后记
至此整个搭建流程已完成,使用API服务需要开启23000、23001、22122三个端口号,否则外网无法访问。如内网使用,则只需开启23001访问端口即可。
文章参考:[文章参考无业游民-隋唐][3]
[1]: https://blog.chihiro.org.cn/archives/2019092922460940604
[2]: https://blog.chihiro.org.cn/upload/2020/09/fdfs_conf-1e6aad550e6642f69bc50db9df75430d.zip
[3]: https://blog.csdn.net/bondsui/article/details/90115486
[image-1]: http://120.78.69.151:23001/group1/M00/00/00/rBLcEV2kKyKAV8ugAACZsk13Smg395.jpg
[image-2]: https://blog.chihiro.org.cn/upload/2019/10/%E9%A2%84%E8%A7%88-b38a03d85992417fbc00ce47dd892357.png

docke搭建单机FastDFS文件服务器