拉取镜像
docker pull morunchang/fastdfs
目录结构
- /data
- /fastdfs
- /fdfs_tr
- Dockerfile
- client.conf
- nginx.conf
- tracker.sh
- /fdfs_st1
- Dockerfile
- nginx.conf
- /fdfs_st2
- Dockerfile
- nginx.conf
安装Tracker
创建文件:Dockerfile
FROM morunchang/fastdfs
COPY nginx.conf /etc/nginx/conf/nginx.conf
COPY tracker.sh /tracker.sh
ENTRYPOINT sh tracker.sh
创建文件: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=/data/fast_data
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=192.168.4.30: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=8080
#use "#include" directive to include HTTP other settiongs
##include http.conf
创建文件:nginx.conf
#user nobody;
worker_processes 5;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
worker_rlimit_nofile 8192;
events {
worker_connections 4096;
}
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 65;
#gzip on;
upstream fdfs_group1 {
server 192.168.4.30:8081 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group2 {
server 192.168.4.29:8081 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://fdfs_group1;
expires 30d;
}
location /group2/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://fdfs_group2;
expires 30d;
}
}
}
创建文件:tracker.sh
#!/bin/sh
/data/fastdfs/tracker/fdfs_trackerd /etc/fdfs/tracker.conf
/etc/nginx/sbin/nginx
tail -f /data/fast_data/logs/trackerd.log
构建Tracker容器
docker build -t fdfs_tracker:1.0.0 .
docker run -dit --net=host -v /data/fastdfs/fdfs_tr/fast_data:/data/fast_data -v /data/fastdfs/fdfs_tr/client.conf:/etc/fdfs/client.conf --name fdfs_tr fdfs_tracker:1.0.0
安装Storage
创建文件:Dockerfile
FROM morunchang/fastdfs
COPY nginx.conf /etc/nginx/conf/nginx.conf
ENTRYPOINT sh storage.sh
创建文件:nginx.conf
worker_processes 5;
worker_rlimit_nofile 8192;
events {
worker_connections 4096;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8081;
server_name localhost;
location ~/group([0-9])/M00 {
root /data/fast_data/data;
ngx_fastdfs_module;
}
}
}
构建Storage容器
docker build -t fdfs_storage:1.0.0 .
# 集群1
docker run -dit --net=host --restart=always -v /data/fastdfs/fdfs_st1/fast_data:/data/fast_data -e GROUP_NAME=group1 -e TRACKER_IP=192.168.4.30:22122 --name fdfs_st1 fdfs_storage:1.0.0
# 集群2
docker run -dit --net=host --restart=always -v /data/fastdfs/fdfs_st2/fast_data:/data/fast_data -e GROUP_NAME=group2 -e TRACKER_IP=192.168.4.30:22122 --name fdfs_st2 fdfs_storage:1.0.1
验证
查看Tracker注册情况
docker exec -it fdfs_tr fdfs_monitor /etc/fdfs/client.conf
测试上传
docker exec -it fdfs_tr bash
echo "aaa" >> test1.txt && echo "bbb" >> test2.txt && echo "ccc" >> test3.txt
# 测试
/usr/bin/fdfs_test /etc/fdfs/client.conf upload test1.txt
/usr/bin/fdfs_test /etc/fdfs/client.conf upload test2.txt
/usr/bin/fdfs_test /etc/fdfs/client.conf upload test3.txt