#### **环境:**
系统: **Centos7**
Docker版本: **18.03.1-ce, build 9ee9f40**
容器网络: **桥接docker0**
容器网段: **10.10.0.0/24**
#### **Dockerfile文件**
```bash
FROM alpine:3.6
MAINTAINER ynotes.cn <admin@ynotes.cn>
#环境变量
ENV NGINX_PORT 80
ENV FASTDFS_PORT 22122
#编译参数
ARG HOME=/root
ARG FASTDFS_VERSION=5.11
ARG LIBFASTCOMMON_VERSION=1.0.38
ARG FASTDFS_NGINX_MODULE_VERSION=1.20
ARG NGINX_VERSION=1.12.1
#下载包
RUN cd ${HOME} \
&& sed -i 's#http://[^/]*/\(.*\)$#http://mirrors.aliyun.com/\1#g' /etc/apk/repositories \
&& apk update \
&& apk add --no-cache --virtual .build-deps bash gcc libc-dev make openssl-dev pcre-dev zlib-dev linux-headers curl gnupg libxslt-dev gd-dev geoip-dev \
&& curl -fLS https://github.com/happyfish100/fastdfs/archive/V${FASTDFS_VERSION}.tar.gz -o V${FASTDFS_VERSION}.tar.gz \
&& curl -fLS https://github.com/happyfish100/libfastcommon/archive/V${LIBFASTCOMMON_VERSION}.tar.gz -o V${LIBFASTCOMMON_VERSION}.tar.gz \
&& curl -fLS https://github.com/happyfish100/fastdfs-nginx-module/archive/V${FASTDFS_NGINX_MODULE_VERSION}.tar.gz -o V${FASTDFS_NGINX_MODULE_VERSION}.tar.gz \
&& curl -fSL http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz -o nginx-${NGINX_VERSION}.tar.gz \
&& tar xf V${FASTDFS_VERSION}.tar.gz \
&& tar xf V${LIBFASTCOMMON_VERSION}.tar.gz \
&& tar xf V${FASTDFS_NGINX_MODULE_VERSION}.tar.gz \
&& tar zxf nginx-${NGINX_VERSION}.tar.gz
#安装包
RUN cd ${HOME}/libfastcommon-${LIBFASTCOMMON_VERSION}/ \
&& ./make.sh \
&& ./make.sh install \
&& cd ${HOME}/fastdfs-${FASTDFS_VERSION}/ \
&& ./make.sh \
&& ./make.sh install \
&& sed "s@/home/yuqing/fastdfs@/data/fastdfs/tracker@g" /etc/fdfs/tracker.conf.sample > /etc/fdfs/tracker.conf \
&& sed "s@/home/yuqing/fastdfs@/data/fastdfs/storage@g" /etc/fdfs/storage.conf.sample > /etc/fdfs/storage.conf \
&& sed "s@/home/yuqing/fastdfs@/data/fastdfs/storage@g" /etc/fdfs/client.conf.sample > /etc/fdfs/client.conf \
&& sed -i 's#CORE_INCS=.*#CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"#g' ${HOME}/fastdfs-nginx-module-${FASTDFS_NGINX_MODULE_VERSION}/src/config \
&& sed -i 's#ngx_module_incs=.*#ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"#g' ${HOME}/fastdfs-nginx-module-${FASTDFS_NGINX_MODULE_VERSION}/src/config \
&& chmod u+x ${HOME}/fastdfs-nginx-module-${FASTDFS_NGINX_MODULE_VERSION}/src/config \
&& cd ${HOME}/nginx-${NGINX_VERSION} \
&& ./configure --add-module=${HOME}/fastdfs-nginx-module-${FASTDFS_NGINX_MODULE_VERSION}/src \
&& make && make install
#配置包
RUN cp ${HOME}/fastdfs-nginx-module-${FASTDFS_NGINX_MODULE_VERSION}/src/mod_fastdfs.conf /etc/fdfs/ \
&& sed -i "s#^store_path0.*#store_path0 = /data/fastdfs/storage#g" /etc/fdfs/mod_fastdfs.conf \
&& sed -i "s#^url_have_group_name.*#url_have_group_name = true#g" /etc/fdfs/mod_fastdfs.conf \
&& cd ${HOME}/fastdfs-${FASTDFS_VERSION}/conf/ \
&& cp http.conf mime.types /etc/fdfs/ \
&& echo -e "worker_processes 2;\nevents { \nworker_connections 10240; \n}\nhttp { \ninclude mime.types;\ndefault_type application/octet-stream;\nsendfile on;\nkeepalive_timeout 65;\nserver {\nlisten NGINX_PORT;\nserver_name localhost;\nlocation ~/group([0-9])/M00 {\nngx_fastdfs_module;\n}\n}\n}">/usr/local/nginx/conf/nginx.conf
#清理包
RUN rm -rf ${HOME}/* \
&& apk del .build-deps gcc libc-dev make openssl-dev linux-headers curl gnupg libxslt-dev gd-dev geoip-dev \
&& apk add bash pcre-dev zlib-dev
#安装脚本
RUN sed -i "s/NGINX_PORT/$NGINX_PORT/g" /usr/local/nginx/conf/nginx.conf \
&& echo -e "mkdir -p /data/fastdfs/storage/data\nmkdir -p /data/fastdfs/tracker\nln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/M00\nHOST_IP=\$(ip addr |grep 'scope global eth0'|awk '{ print \$2}'|awk -F/ '{ print \$1 }')\nsed -i "s/^tracker_server=.*$/tracker_server=\$HOST_IP:$FASTDFS_PORT/g" /etc/fdfs/storage.conf\nsed -i "s/^tracker_server=.*$/tracker_server=\$HOST_IP:$FASTDFS_PORT/g" /etc/fdfs/mod_fastdfs.conf\n/etc/init.d/fdfs_trackerd start \n/etc/init.d/fdfs_storaged start\n/usr/local/nginx/sbin/nginx\ntail -f /usr/local/nginx/logs/access.log" >/start.sh \
&& chmod +x /start.sh
EXPOSE 80 22122 23000
ENTRYPOINT ["/bin/bash","/start.sh"]
```
#### **编译镜像文件**
```bash
$ docker build -t fastdfs-nginx:v5.11 .
```
#### **启动容器**
```bash
$ docker run -p 80:80 -p 22122:22122 -p 23000:23000 -v /root/docker_demo/fastdfs/data:/data/fastdfs fastdfs-nginx:v5.11
```
#### **测试机1(Centos7)**
添加路由
```bash
$ route add -net 10.10.0.0 netmask 255.255.255.0 gw 192.168.50.252
```
上传图片
```bash
$ fdfs_test /etc/fdfs/client.conf upload zzzz.jpg
```
```
group_name=group1, remote_filename=M00/00/00/CgoAAVtxAhqAWpxyAAE7WHOlIPs425.jpg
source ip address: 10.10.0.1
file timestamp=2018-08-13 11:59:22
file size=80728
file crc32=1940201723
example file url: http://10.10.0.1/group1/M00/00/00/CgoAAVtxAhqAWpxyAAE7WHOlIPs425.jpg
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/CgoAAVtxAhqAWpxyAAE7WHOlIPs425_big.jpg
source ip address: 10.10.0.1
file timestamp=2018-08-13 11:59:22
file size=80728
file crc32=1940201723
example file url: http://10.10.0.1/group1/M00/00/00/CgoAAVtxAhqAWpxyAAE7WHOlIPs425_big.jpg
```
#### **测试机2(window7)**
添加路由
```cmd
> route add 10.10.0.0 mask 255.255.255.0 192.168.50.252
```
访问图片
