Dockerfile 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. FROM alpine:3.10
  2. MAINTAINER Eddy xuq@bpmhome.cn
  3. ENV HOME /root
  4. RUN \
  5. echo -e "http://mirrors.ustc.edu.cn/alpine/v3.10/main" > /etc/apk/repositories && \
  6. echo -e "http://mirrors.ustc.edu.cn/alpine/v3.10/community" >> /etc/apk/repositories
  7. # 安装准备
  8. RUN apk update \
  9. && 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
  10. # 下载fastdfs、libfastcommon、nginx插件的源码
  11. RUN cd /root \
  12. && curl -fSL https://github.com/happyfish100/libfastcommon/archive/V1.0.36.tar.gz -o fastcommon.tar.gz \
  13. && curl -fSL https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11 -o fastfs.tar.gz \
  14. && tar zxf fastcommon.tar.gz \
  15. && tar zxf fastfs.tar.gz
  16. # 安装libfastcommon
  17. RUN cd ${HOME}/libfastcommon-1.0.36/ \
  18. && ./make.sh \
  19. && ./make.sh install
  20. # 安装fastdfs v5.11
  21. RUN cd ${HOME}/fastdfs-5.11/ \
  22. && ./make.sh \
  23. && ./make.sh install
  24. # 配置fastdfs: base_dir
  25. RUN cd /etc/fdfs/ \
  26. && cp storage.conf.sample storage.conf \
  27. && cp tracker.conf.sample tracker.conf \
  28. && cp client.conf.sample client.conf \
  29. && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/tracker|g" /etc/fdfs/tracker.conf \
  30. && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/storage|g" /etc/fdfs/storage.conf \
  31. && sed -i "s|/home/yuqing/fastdfs|/var/local/fdfs/storage|g" /etc/fdfs/client.conf
  32. # 清理文件
  33. RUN rm -rf ${HOME}/*
  34. RUN apk del .build-deps gcc libc-dev make openssl-dev linux-headers curl gnupg libxslt-dev gd-dev geoip-dev
  35. RUN apk add bash pcre-dev zlib-dev
  36. # 配置启动脚本,在启动时中根据环境变量替换fastdfs端口
  37. # 默认fastdfs端口
  38. ENV FDFS_PORT 22122
  39. ENV FDFS_STORAGE_PORT=23000
  40. ENV TRACKER_WEB_PORT=6666
  41. ENV STORAGE_WEB_PORT=8888
  42. # 创建日志查看脚本
  43. RUN echo -e "\
  44. STORAGE=/var/local/fdfs/storage/logs/storaged.log\n\
  45. TRACKER=/var/local/fdfs/tracker/logs/trackerd.log\n\
  46. LOG=\"\"\n\
  47. if [ \"tracker\" = \"\$SERVER\" ]; then\n\
  48. LOG=\${TRACKER}; \n\
  49. elif [ \"storage\" = \"\$SERVER\" ]; then\n\
  50. LOG=\${STORAGE}; \n\
  51. else\n\
  52. LOG=\${STORAGE}; \n\
  53. fi\n\
  54. tail -F \${LOG};\n\
  55. ">/log.sh \
  56. && chmod u+x /log.sh
  57. # 创建启动脚本
  58. RUN echo -e "\
  59. #!/bin/bash\n\
  60. mkdir -p /var/local/fdfs/storage/data /var/local/fdfs/tracker; \n\
  61. ln -s /var/local/fdfs/storage/data/ /var/local/fdfs/storage/data/M00; \n\n\
  62. sed -i \"s/http.server_port=.*$/http.server_port=\$TRACKER_WEB_PORT/g\" /etc/fdfs/tracker.conf; \n\n\
  63. sed -i \"s/^port=.*$/port=\$FDFS_PORT/g\" /etc/fdfs/tracker.conf; \n\
  64. sed -i \"s/http.server_port=.*$/http.server_port=\$STORAGE_WEB_PORT/g\" /etc/fdfs/storage.conf; \n\n\
  65. sed -i \"s/^port=.*$/port=\$FDFS_STORAGE_PORT/g\" /etc/fdfs/storage.conf; \n\
  66. if [ \"\$IP\" = \"\" ]; then \n\
  67. IP=`ifconfig eth0 | grep inet | awk '{print \$2}'| awk -F: '{print \$2}'`; \n\
  68. fi \n\
  69. sed -i \"s/^tracker_server=.*$/tracker_server=\$IP:\$FDFS_PORT/g\" /etc/fdfs/client.conf; \n\
  70. sed -i \"s/^tracker_server=.*$/tracker_server=\$IP:\$FDFS_PORT/g\" /etc/fdfs/storage.conf; \n\
  71. if [ \"tracker\" = \"\$SERVER\" ]; then\n\
  72. /etc/init.d/fdfs_trackerd start; \n\
  73. elif [ \"storage\" = \"\$SERVER\" ]; then\n\
  74. /etc/init.d/fdfs_storaged start; \n\
  75. else\n\
  76. /etc/init.d/fdfs_trackerd start; \n\
  77. /etc/init.d/fdfs_storaged start; \n\
  78. fi\n\
  79. /bin/bash log.sh;\n\
  80. ">/start.sh \
  81. && chmod u+x /start.sh
  82. ENTRYPOINT ["/bin/bash","/start.sh"]