本教程基于docker和docker-compose环境,使用了morunchang/fastdfs镜像(包含nginx访问模块).可快速实现FastDFS的单机图片服务器部署.
1 建立docker文件结构
文件结构如下
2 编写docker-compose文件
docker-compose.yml文件如下
version: '3'
services:
tracker:
image: "morunchang/fastdfs"
ports:
- "22122:22122"
entrypoint: sh tracker.sh
storage:
depends_on:
- tracker
build: ./storage
environment:
GROUP_NAME: group1
TRACKER_IP: 机器IP:22122
ports:
- "8088:8080"
- "23000:23000"
volumes:
- /my/data/fast_data:/data/fast_data
- 思路:
tracker是直接运行,而storage则需要根据dockerfile来自己构建镜像运行,这是因为需要对nginx.conf
文件进行配置 - 注意:
- 22122是tracker的端口,23000是storage的端口,这两个端口写在彼此的配置文件中,除非修改配置文件,否则不要去改,通过映射的方法也不行.8080是nginx访问端口,只配置在storage里面,所以可通过映射改为其他端口
- TRACKER_IP 需要是
公网IP
!否则会报错:java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
3 编写Dockerfile文件
内容如下,只是把配置文件拷贝进来,覆盖掉原文件
FROM morunchang/fastdfs
COPY nginx.conf /data/nginx/conf/nginx.conf
ENTRYPOINT sh storage.sh
4 编写nginx.conf文件
在容器的/data/nginx/conf目录下本来就有一个nginx.conf文件,将其复制出来,在server结构下添加如下内容
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group1;
expires 30d;
}
- 注意
如果上面docker-compose文件中GROUP_NAME不为group1,则这里需要对应修改
这里贴出我的nginx.conf文件,已经把大部分注释删掉了
#user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
server_name localhost;
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group1;
expires 30d;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
5 运行测试
在docker-compose.yml
所在目录运行docker-compose up -d
即可,使用docker ps
观测结果如下
使用客户端上传,文件在/my/data/fast_data目录下(docker-compose文件映射出来的)