环境准备:
使用的软件:
libfatscommon:FastDFS分离出的一些公用函数包 https://github.com/happyfish1...
FastDFS:FastDFS本体 https://github.com/happyfish1...
fastdfs-nginx-module:FastDFS和nginx的关联模块 https://github.com/happyfish1...
nginx:nginx1.16.1 http://nginx.org/en/download....
将以上文件,下载下来,并放到一个地方
Dockerfile 编写
FROM centosMAINTAINER 陈少平 18250073990@163.com# install dependencyRUN yum -y upgrade \ && yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel -yWORKDIR /usr/local/src# copy tool packageADD fastdfs-5.11.tar.gz ./ADD fastdfs-nginx-module-1.20.tar.gz ./ADD libfastcommon-1.0.39.tar.gz ./ADD nginx-1.16.1.tar.gz ./# install libfastcommonWORKDIR /usr/local/src/libfastcommon-1.0.39RUN ./make.sh && ./make.sh install# install FastDFSWORKDIR /usr/local/src/fastdfs-5.11RUN ./make.sh \ && ./make.sh install# install fastdfs-nginx-moduleADD config /usr/local/src/fastdfs-nginx-module-1.20/src# install nginxWORKDIR /usr/local/src/nginx-1.16.1RUN ./configure --add-module=/usr/local/src/fastdfs-nginx-module-1.20/src \ && make \ && make install# copy filesRUN cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf \ && cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf \ && cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf \ && cp /usr/local/src/fastdfs-5.11/conf/http.conf /etc/fdfs/ \ && cp /usr/local/src/fastdfs-5.11/conf/mime.types /etc/fdfs/ \ && cp /usr/local/src/fastdfs-nginx-module-1.20/src/mod_fastdfs.conf /etc/fdfs# create fastdfs storage RUN mkdir /home/dfsWORKDIR /etc/fdfs# nginx portEXPOSE 80# fdfs-tracker portEXPOSE 22122# fdfs-client portEXPOSE 8888CMD ["/bin/bash"]
修改 /usr/local/src/fastdfs-nginx-module/src/config 文件信息
(ngx_module_incs,CORE_INCS, CORE_LIBS 修改这 3个地方)
ngx_addon_name=ngx_http_fastdfs_module
if test -n "${ngx_module_link}"; then ngx_module_type=HTTP ngx_module_name=$ngx_addon_name ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/" ngx_module_libs="-lfastcommon -lfdfsclient" ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c" ngx_module_deps= CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'" . auto/moduleelse HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module" NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c" CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" CORE_LIBS="$CORE_LIBS -L/usr/lib -lfastcommon -lfdfsclient" CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"fi
构建镜像
docker build -t csp/fastdfs .
运行容器前准备:
复制镜像中的文件到宿主机(为了挂载)
bogon:fastdfs chenshaoping$ pwd/Users/chenshaoping/docker-test/fastdfsbogon:fastdfs chenshaoping$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcsp/fastdfs latest 40322e113821 3 hours ago 596MBbogon:fastdfs chenshaoping$ docker run -it csp/fastdfsbogon:fastdfs chenshaoping$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES63a7588fd7be csp/fastdfs "/bin/bash" 4 minutes ago Up 4 minutes 80/tcp, 8888/tcp, 22122/tcp cool_ridebogon:fastdfs chenshaoping$ docker cp 63a7588fd7be:/etc/fdfs /Users/chenshaoping/docker-test/fastdfs/fdfsbogon:fastdfs chenshaoping$ docker cp 63a7588fd7be:/usr/local/nginx/conf/nginx.conf /Users/chenshaoping/docker-test/fastdfs/nginx
编写 fastdfs 启动脚本
bogon:fastdfs chenshaoping$ pwd/Users/chenshaoping/docker-test/fastdfsbogon:fastdfs chenshaoping$ vim start.shbogon:fastdfs chenshaoping$ chmod &55 start.sh#!/bin/sh/etc/init.d/fdfs_trackerd start/etc/init.d/fdfs_storaged start/usr/local/nginx/sbin/nginx -g 'daemon off
修改 tracker 配置
#服务器ip为 192.168.52.1#我建议用ftp下载下来这些文件 本地修改vim /Users/chenshaoping/docker-test/fastdfs/tracker.conf#需要修改的内容如下port=22122 # tracker服务器端口(默认22122,一般不修改)base_path=/home/dfs # 存储日志和数据的根目录
修改 storage 配置
vim /Users/chenshaoping/docker-test/fastdfs/storage.conf#需要修改的内容如下port=23000 # storage服务端口(默认23000,一般不修改)base_path=/home/dfs # 数据和日志文件存储根目录store_path0=/home/dfs # 第一个存储目录tracker_server=192.168.52.1:22122 # tracker服务器IP和端口http.server_port=8888 # http访问文件的端口(默认8888,看情况修改,和nginx中保持一致)
修改 client 配置
vim /Users/chenshaoping/docker-test/fastdfs/client.conf#需要修改的内容如下base_path=/home/dfstracker_server=192.168.52.1:22122 #tracker服务器IP和端口
配置 nginx 访问
vim /Users/chenshaoping/docker-test/fastdfs/mod_fastdfs.conf#需要修改的内容如下tracker_server=192.168.52.1:22122 #tracker服务器IP和端口url_have_group_name=truestore_path0=/home/dfs#配置nginx.configvim /Users/chenshaoping/docker-test/fastdfs/conf/nginx.conf#添加如下配置server { listen 8888; ## 该端口为storage.conf中的http.server_port相同 server_name localhost; location ~/group[0-9]/ { ngx_fastdfs_module; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; }}# 配置 nginx 逆向代理 server { listen 80; ...... 以上略过 location ~/group[0-9]/ { proxy_pass http://localhost:8888; } ...... 以下略过 }
启动容器,并启动相应服务
docker run -it -p 12121:80 -v /Users/chenshaoping/docker-test/fastdfs/fdfs:/etc/fdfs -v /Users/chenshaoping/docker-test/fastdfs/nginx/nginx.conf:/usr/local/nginx/conf/nginx.conf csp/fastdfs./start.sh # 运行上面编写的脚本文件
测试文件上传(docker 内执行)
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/fastdfs-5.11/INSTALL
参考:
https://github.com/happyfish1... fastdfs 安装
https://www.jianshu.com/p/103... ubuntu fastdfs docker 化