├── README.md └── fastdfs ├── Dockerfile └── docker-compose.yaml /README.md: -------------------------------------------------------------------------------- 1 | # docker-fastdfs 2 | 基于docker构建的fastdfs镜像 3 | -------------------------------------------------------------------------------- /fastdfs/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.6 2 | 3 | MAINTAINER shenggangshu 4 | 5 | ENV HOME /root 6 | 7 | #安装准备 8 | RUN apk update \ 9 | && apk add --no-cache git gcc libc-dev make automake autoconf libtool pcre pcre-dev zlib zlib-dev openssl-dev wget vim --repository https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.6/main 10 | 11 | 12 | #下载fastdfs.libfastcommon.nginx插件源码 13 | RUN cd /root \ 14 | && git clone https://github.com/happyfish100/libfastcommon.git --depth 1 \ 15 | && git clone https://github.com/happyfish100/fastdfs.git --depth 1 \ 16 | && wget http://nginx.org/download/nginx-1.15.4.tar.gz \ 17 | && git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1 18 | 19 | # 安装libfastcommon 20 | RUN cd ${HOME}/libfastcommon/ \ 21 | && ./make.sh \ 22 | && ./make.sh install 23 | 24 | # 安装fastdfs 25 | RUN cd ${HOME}/fastdfs/ \ 26 | && ./make.sh \ 27 | && ./make.sh install \ 28 | && cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf \ 29 | && cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf \ 30 | && cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf \ 31 | && cp ${HOME}/fastdfs/conf/http.conf /etc/fdfs/ \ 32 | && cp ${HOME}/fastdfs/conf/mime.types /etc/fdfs/ \ 33 | && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/tracker|g" /etc/fdfs/tracker.conf \ 34 | && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/storage|g" /etc/fdfs/storage.conf \ 35 | && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/storage|g" /etc/fdfs/client.conf 36 | 37 | # 获取nginx源码 38 | RUN cd ${HOME} \ 39 | && tar -zxvf nginx-1.15.4.tar.gz \ 40 | && cd nginx-1.15.4/ \ 41 | && ./configure --add-module=${HOME}/fastdfs-nginx-module/src/ \ 42 | && make \ 43 | && make install 44 | 45 | # 设置nginx和fastdfs联合环境,并配置nginx 46 | RUN cp ${HOME}/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs \ 47 | && sed -i "s|^store_path0.*$|store_path0=/var/local/fdfs/storage|g" /etc/fdfs/mod_fastdfs.conf \ 48 | && sed -i "s|^url_have_group_name =.*$|url_have_group_name = true|g" /etc/fdfs/mod_fastdfs.conf \ 49 | && cd ${HOME}/fastdfs/conf/ \ 50 | && echo -e "\ 51 | events {\n\ 52 | worker_connections 1024;\n\ 53 | }\n\ 54 | http {\n\ 55 | include mime.types;\n\ 56 | default_type application/octet-stream;\n\ 57 | server {\n\ 58 | listen 8888;\n\ 59 | server_name localhost;\n\ 60 | location ~ /group[0-9]/M00 {\n\ 61 | ngx_fastdfs_module;\n\ 62 | }\n\ 63 | }\n\ 64 | }">/usr/local/nginx/conf/nginx.conf 65 | 66 | # 清理文件 67 | RUN rm -rf ${HOME}/* 68 | RUN apk del gcc libc-dev make openssl-dev 69 | # 配置启动脚本,在启动时中根据环境变量替换nginx端口、fastdfs端口 70 | # 默认nginx端口 71 | ENV WEB_PORT 8888 72 | # 默认fastdfs端口 73 | ENV FDFS_PORT 22122 74 | 75 | # 创建启动脚本 76 | RUN echo -e "\ 77 | mkdir -p /var/local/fdfs/storage/data /var/local/fdfs/tracker; \n\ 78 | ln -s /var/local/fdfs/storage/data/ /var/local/fdfs/storage/data/M00; \n\n\ 79 | sed -i \"s/listen\ .*$/listen\ \$WEB_PORT;/g\" /usr/local/nginx/conf/nginx.conf; \n\ 80 | sed -i \"s/http.server_port=.*$/http.server_port=\$WEB_PORT/g\" /etc/fdfs/storage.conf; \n\n\ 81 | if [ \"\$IP\" = \"\" ]; then \n\ 82 | IP=`ifconfig eth0 | grep inet | awk '{print \$2}'| awk -F: '{print \$2}'`; \n\ 83 | fi \n\ 84 | sed -i \"s/^tracker_server=.*$/tracker_server=\$IP:\$FDFS_PORT/g\" /etc/fdfs/client.conf; \n\ 85 | sed -i \"s/^tracker_server=.*$/tracker_server=\$IP:\$FDFS_PORT/g\" /etc/fdfs/storage.conf; \n\ 86 | sed -i \"s/^tracker_server=.*$/tracker_server=\$IP:\$FDFS_PORT/g\" /etc/fdfs/mod_fastdfs.conf; \n\n\ 87 | /etc/init.d/fdfs_trackerd start; \n\ 88 | /etc/init.d/fdfs_storaged start; \n\ 89 | /usr/local/nginx/sbin/nginx; \n\ 90 | tail -f /usr/local/nginx/logs/access.log \ 91 | ">/start.sh \ 92 | && chmod u+x /start.sh 93 | 94 | # 暴露端口。改为采用host网络,不需要单独暴露端口 95 | # EXPOSE 80 22122 96 | 97 | ENTRYPOINT ["/bin/bash","/start.sh"] 98 | -------------------------------------------------------------------------------- /fastdfs/docker-compose.yaml: -------------------------------------------------------------------------------- 1 | version: '3.0' 2 | 3 | services: 4 | fastdfs: 5 | build: . 6 | image: haloo/fastdfs:5.11 7 | # 该容器是否需要开机启动+自动重启。若需要,则取消注释。 8 | #restart: always 9 | container_name: fastdfs 10 | environment: 11 | # nginx服务端口 12 | - WEB_PORT=80 13 | # docker所在主机的IP地址 14 | - IP=192.168.2.222 15 | volumes: 16 | # 将本地目录映射到docker容器内的fastdfs数据存储目录,将fastdfs文件存储到主机上,以免每次重建docker容器,之前存储的文件就丢失了。 17 | - ${HOME}/docker-data/fdfs:/var/local/fdfs 18 | # 使docker具有root权限以读写主机上的目录 19 | privileged: true 20 | # 网络模式为host,即直接使用主机的网络接口 21 | network_mode: "host" --------------------------------------------------------------------------------