FROM alpine:3.10 MAINTAINER Eddy xuq@bpmhome.cn ENV HOME /root RUN \ echo -e "http://mirrors.ustc.edu.cn/alpine/v3.10/main" > /etc/apk/repositories && \ echo -e "http://mirrors.ustc.edu.cn/alpine/v3.10/community" >> /etc/apk/repositories # 安装准备 RUN 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 # 下载fastdfs、libfastcommon、nginx插件的源码 RUN cd /root \ && curl -fSL https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz -o fastcommon.tar.gz \ && curl -fSL https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11 -o fastfs.tar.gz \ && tar zxf fastcommon.tar.gz \ && tar zxf fastfs.tar.gz # 安装libfastcommon RUN cd ${HOME}/libfastcommon-1.0.36/ \ && ./make.sh \ && ./make.sh install # 安装fastdfs v5.11 RUN cd ${HOME}/fastdfs-5.11/ \ && ./make.sh \ && ./make.sh install # 配置fastdfs: base_dir RUN cd /etc/fdfs/ \ && cp storage.conf.sample storage.conf \ && cp tracker.conf.sample tracker.conf \ && cp client.conf.sample client.conf \ && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/tracker|g" /etc/fdfs/tracker.conf \ && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/storage|g" /etc/fdfs/storage.conf \ && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/storage|g" /etc/fdfs/client.conf # 清理文件 RUN rm -rf ${HOME}/* RUN apk del .build-deps gcc libc-dev make openssl-dev linux-headers curl gnupg libxslt-dev gd-dev geoip-dev RUN apk add bash pcre-dev zlib-dev # 配置启动脚本,在启动时中根据环境变量替换fastdfs端口 # 默认fastdfs端口 ENV FDFS_PORT 22122 ENV FDFS_STORAGE_PORT=23000 ENV TRACKER_WEB_PORT=6666 ENV STORAGE_WEB_PORT=8888 # 创建日志查看脚本 RUN echo -e "\ STORAGE=/var/local/fdfs/storage/logs/storaged.log\n\ TRACKER=/var/local/fdfs/tracker/logs/trackerd.log\n\ LOG=\"\"\n\ if [ \"tracker\" = \"\$SERVER\" ]; then\n\ LOG=\${TRACKER}; \n\ elif [ \"storage\" = \"\$SERVER\" ]; then\n\ LOG=\${STORAGE}; \n\ else\n\ LOG=\${STORAGE}; \n\ fi\n\ tail -F \${LOG};\n\ ">/log.sh \ && chmod u+x /log.sh # 创建启动脚本 RUN echo -e "\ #!/bin/bash\n\ mkdir -p /var/local/fdfs/storage/data /var/local/fdfs/tracker; \n\ ln -s /var/local/fdfs/storage/data/ /var/local/fdfs/storage/data/M00; \n\n\ sed -i \"s/http.server_port=.*$/http.server_port=\$TRACKER_WEB_PORT/g\" /etc/fdfs/tracker.conf; \n\n\ sed -i \"s/^port=.*$/port=\$FDFS_PORT/g\" /etc/fdfs/tracker.conf; \n\ sed -i \"s/http.server_port=.*$/http.server_port=\$STORAGE_WEB_PORT/g\" /etc/fdfs/storage.conf; \n\n\ sed -i \"s/^port=.*$/port=\$FDFS_STORAGE_PORT/g\" /etc/fdfs/storage.conf; \n\ if [ \"\$IP\" = \"\" ]; then \n\ IP=`ifconfig eth0 | grep inet | awk '{print \$2}'| awk -F: '{print \$2}'`; \n\ fi \n\ sed -i \"s/^tracker_server=.*$/tracker_server=\$IP:\$FDFS_PORT/g\" /etc/fdfs/client.conf; \n\ sed -i \"s/^tracker_server=.*$/tracker_server=\$IP:\$FDFS_PORT/g\" /etc/fdfs/storage.conf; \n\ if [ \"tracker\" = \"\$SERVER\" ]; then\n\ /etc/init.d/fdfs_trackerd start; \n\ elif [ \"storage\" = \"\$SERVER\" ]; then\n\ /etc/init.d/fdfs_storaged start; \n\ else\n\ /etc/init.d/fdfs_trackerd start; \n\ /etc/init.d/fdfs_storaged start; \n\ fi\n\ /bin/bash log.sh;\n\ ">/start.sh \ && chmod u+x /start.sh ENTRYPOINT ["/bin/bash","/start.sh"]