项目作者: lirongtong

项目描述 :
Docker 镜像 - :smirk: 自制镜像,集成了 PHP + Nginx + FastDFS,用于搭建 FastDFS 分布式文件服务系统,已上传至 Docker Hub,:boom: 具体的安装方式可以查看扩展链接 :point_down:
高级语言: Dockerfile
项目地址: git://github.com/lirongtong/miitvip-nginx-php-fastdfs.git
创建时间: 2020-09-15T02:42:48Z
项目社区:https://github.com/lirongtong/miitvip-nginx-php-fastdfs

开源协议:MIT License

下载


Docker 镜像

集成 FastDFS, Nginx, PHP 等多种软件的 Docker 镜像, 免除 FastDFS 构建文件管理服务过程中一系列的关联服务的繁琐操作,该镜像已经上传至 Docker Hub.
>
FastDFS: 一个开源的轻量级分布式文件系统, 解决大容量存储和负载均衡问题 ( https://github.com/happyfish100/fastdfs ) .
>
镜像构建: docker build -t miitvip/nginx-php-fastdfs .

0. 更新说明

  1. [ ------------ 2022-12-20 ------------ ]
  2. 1. php 更新至 8.2.0
  3. 2. nginx 更新至 1.22.1
  4. 3. php redis 更新至 5.3.7
  5. [ ------------ 2019-12-19 ------------ ]
  6. 1. php 更新至 7.4.1
  7. [ ------------ 2019-11-29 ------------ ]
  8. 1. nginx 更新至 1.17.6
  9. 2. php 更新至 7.3.12
  10. 3. 新增 composer
  11. 4. 更新启动脚本 start.sh

1. 拉取镜像

docker pull miitvip/nginx-php-fastdfs

2. 创建目录

  1. # 运行之前,创建好相应的文件目录,例如:
  2. mkdir -p /miitvip/logs/php \
  3. /miitvip/logs/nginx \
  4. /miitvip/docker/nginx/ \
  5. /miitvip/docker/nginx/ssl \
  6. /miitvip/docker/nginx/letsencrypt \
  7. /miitvip/docker/fastdfs/tracker \
  8. /miitvip/docker/fastdfs/storage \
  9. /miitvip/docker/fastdfs/client \
  10. /miitvip/docker/fastdfs/conf \
  11. /miitvip/web/fastdfs

3. 临时容器

docker run --name php -p 9000:9000 -d --restart=always miitvip/nginx-php-fastdfs php

4. 进入容器

docker exec -it php /bin/bash

5. 查看信息

  1. php -r 'phpinfo();'
  2. # 注意如下两个信息
  3. ...
  4. Configuration File (php.ini) Path => /usr/local/etc/php
  5. extension_dir => /usr/local/lib/php/extensions/no-debug-non-zts-20180731
  6. ...

6. 复制文件

  1. # docker ps 查看容器信息
  2. # 666f8de6d689 为刚刚启动的临时 PHP 容器ID 或可以直接将 id 改成 name
  3. docker cp 666f8de6d689:/usr/local/lib/php/extensions/no-debug-non-zts-20180731/ /miitvip/docker/php/
  4. mv /miitvip/docker/php/no-debug-non-zts-20180731 /miitvip/docker/php/ext
  5. docker cp 666f8de6d689:/usr/local/etc/php/php.ini /miitvip/docker/php/php.ini

7. 启动 php

  1. # 关闭临时 PHP 并删除后再次启动 PHP
  2. # 注意 -v /miitvip/web:/www 的映射需要与 nginx 两边保持一致
  3. docker stop php
  4. docker rm php
  5. docker run --name php -p 9000:9000 \
  6. -v /miitvip/web:/www:rw \
  7. -v /miitvip/logs/php:/var/log/php \
  8. -v /miitvip/docker/php/ext:/usr/local/lib/php/extensions/no-debug-non-zts-20180731 \
  9. -v /miitvip/docker/php/php.ini:/usr/local/etc/php/php.ini \
  10. -d --restart=always --link mysql:mysql miitvip/nginx-php-fastdfs php

8. 启动 nginx

  1. docker run -d -ti --name nginx \
  2. -p 80:80 -p 443:443 \
  3. -v /miitvip/web:/www \
  4. -v /miitvip/logs/nginx:/var/log/nginx \
  5. -v /miitvip/docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
  6. -v /miitvip/docker/nginx/conf.d:/etc/nginx/conf.d \
  7. -v /miitvip/docker/nginx/ssl:/etc/nginx/ssl \
  8. -v /miitvip/docker/nginx/letsencrypt:/etc/nginx/letsencrypt \
  9. -v /miitvip/web/fastdfs:/fastdfs/store \
  10. --link php:php \
  11. --restart=always miitvip/nginx-php-fastdfs nginx

9. 启动 fastdfs

  1. docker run -d -ti --name fastdfs \
  2. -p 8888:8888 -p 22122:22122 -p 23000:23000 \
  3. -e GROUP_NAME=MIIT \
  4. -e TRACKER_SERVER=服务器IP地址 \
  5. -v /miitvip/docker/fastdfs/tracker:/fastdfs/tracker \
  6. -v /miitvip/docker/fastdfs/storage:/fastdfs/storage \
  7. -v /miitvip/docker/fastdfs/client:/fastdfs/client \
  8. -v /miitvip/docker/fastdfs/conf/tracker.conf:/etc/fdfs/tracker.conf \
  9. -v /miitvip/docker/fastdfs/conf/storage.conf:/etc/fdfs/storage.conf \
  10. -v /miitvip/docker/fastdfs/conf/mod_fastdfs.conf:/etc/fdfs/mod_fastdfs.conf \
  11. -v /miitvip/docker/fastdfs/conf/client.conf:/etc/fdfs/client.conf \
  12. -v /miitvip/docker/fastdfs/conf/http.conf:/etc/fdfs/http.conf \
  13. -v /miitvip/web/fastdfs:/fastdfs/store \
  14. --restart=always miitvip/nginx-php-fastdfs fastdf

10. 测试

  1. docker exec -it fastdfs /bin/bash
  2. /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
  3. # 执行后出现如下提示信息
  4. DEBUG - base_path=/fastdfs/storage, connect_timeout=10, network_timeout=60, tracker_server_count=1,
  5. anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0,
  6. g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0
  7. server_count=1, server_index=0
  8. tracker server is 你的服务器IP:22122
  9. group count: 1
  10. Group 1:
  11. group name = MIIT
  12. disk total space = 50,26700 MB
  13. disk free space = 41,44800 MB
  14. trunk free space = 0 MB
  15. storage server count = 1
  16. active server count = 1
  17. storage server port = 23000
  18. storage HTTP port = 8888
  19. store path count = 1
  20. subdir count per path = 256
  21. current write server index = 0
  22. current trunk file id = 0
  23. Storage 1:
  24. id = 106.52.100.29
  25. ip_addr = 你的服务器IP ACTIVE
  26. http domain =
  27. version = 6.06
  28. join time = 2020-01-01 09:43:23
  29. up time = 2020-01-01 09:43:23
  30. total storage = 50,26700 MB
  31. free storage = 41,44800 MB
  32. upload priority = 10
  33. store_path_count = 1
  34. subdir_count_per_path = 256
  35. storage_port = 23000
  36. storage_http_port = 8888
  37. current_write_path = 0
  38. source storage id =
  39. if_trunk_server = 0
  40. connection.alloc_count = 256
  41. connection.current_count = 0
  42. connection.max_count = 0
  43. total_upload_count = 0
  44. success_upload_count = 0
  45. total_append_count = 0
  46. success_append_count = 0
  47. total_modify_count = 0
  48. success_modify_count = 0
  49. total_truncate_count = 0
  50. success_truncate_count = 0
  51. total_set_meta_count = 0
  52. success_set_meta_count = 0
  53. total_delete_count = 0
  54. success_delete_count = 0
  55. total_download_count = 0
  56. success_download_count = 0
  57. total_get_meta_count = 0
  58. success_get_meta_count = 0
  59. total_create_link_count = 0
  60. success_create_link_count = 0
  61. total_delete_link_count = 0
  62. success_delete_link_count = 0
  63. total_upload_bytes = 0
  64. success_upload_bytes = 0
  65. total_append_bytes = 0
  66. success_append_bytes = 0
  67. total_modify_bytes = 0
  68. success_modify_bytes = 0
  69. stotal_download_bytes = 0
  70. success_download_bytes = 0
  71. total_sync_in_bytes = 0
  72. success_sync_in_bytes = 0
  73. total_sync_out_bytes = 0
  74. success_sync_out_bytes = 0
  75. total_file_open_count = 0
  76. success_file_open_count = 0
  77. total_file_read_count = 0
  78. success_file_read_count = 0
  79. total_file_write_count = 0
  80. success_file_write_count = 0
  81. last_heart_beat_time = 2020-01-02 07:15:27
  82. last_source_update = 1970-01-01 00:00:00
  83. last_sync_update = 1970-01-01 00:00:00
  84. last_synced_timestamp = 1970-01-01 00:00:00

11. 问题

若 FastDFS 启动失败,请进入 fastdfs 容器,手动启动 tracker & storage 后再试

  1. docker exec -it fastdfs /bin/bash
  2. /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
  3. /usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
  4. # 再次查看是否正常
  5. /usr/bin/fdfs_monitor /etc/fdfs/storage.conf

重启 nginx

  1. docker restart nginx