windows制作docker镜像_学习Docker之Dockerfile的镜像制作(一)_FastDFS单机版

  • 什么是FastDFS

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

  • FastDFS架构

FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Trackerserver调度最终由Storage server完成文件上传和下载。

Trackerserver作用是负载均衡和调度,通过Trackerserver在文件上传时可以根据一些策略找到Storageserver提供文件上传服务。可以将tracker称为追踪服务器或调度服务器。

Storageserver作用是文件存储,客户端上传的文件最终存储在Storage服务器上,Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。可以将storage称为存储服务器

f9eb4d414831e673a6719b0a97b0ee00.png

FastDFS架构示意图


  • 基于Dockerfile的FastDFS单机版镜像制作命令说明

用到的关键字:FROM、MAINTAINER、ENV、RUN、EXPOSE、ENTRYPOINT

FROM:指定哪种镜像作为新镜像的基础镜像。

MAINTAINER:指明该镜像的作者和其电子邮件。

RUN:在新镜像内部执行的命令,比如安装一些软件、配置一些基础环境。

ENV:用来在镜像构建过程中设置环境变量,后续的RUN可以使用它所创建的环境变量

EXPOSE:用来暴露端口,其实也可以在docker run的时候指定。

ENTRYPOINT:容器启动后执行的命令,没有这个你的容器啥也不干。docker当然不答应。

  • Dockerfile编写
FROM alpine:3.6MAINTAINER drainkeng ENV HOME /root#安装准备RUN apk update  && apk add --no-cache git gcc libc-dev make automake autoconf libtool pcre pcre-dev zlib zlib-dev openssl-dev wget vim --repository https://mirrors.tuna.tsinghua.edu.cn/alpine/v3.6/main#下载源码RUN cd /root  && git clone https://github.com/happyfish100/libfastcommon.git --depth 1  && git clone https://github.com/happyfish100/fastdfs.git --depth 1  && wget http://nginx.org/download/nginx-1.15.4.tar.gz  && git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1 # 安装libfastcommon RUN cd ${HOME}/libfastcommon/  && ./make.sh  && ./make.sh install# 安装fastdfsRUN cd ${HOME}/fastdfs/  && ./make.sh  && ./make.sh install  && cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf  && cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf  && cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf  && cp ${HOME}/fastdfs/conf/http.conf /etc/fdfs/  && cp ${HOME}/fastdfs/conf/mime.types /etc/fdfs/  && 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# 获取nginx源码RUN cd ${HOME}  && tar -zxvf nginx-1.15.4.tar.gz  && cd nginx-1.15.4/  && ./configure --add-module=${HOME}/fastdfs-nginx-module/src/  && make  && make install# 设置nginx和fastdfs联合环境,并配置nginxRUN cp ${HOME}/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs  && sed -i "s|^store_path0.*$|store_path0=/var/local/fdfs/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/conf/  && echo -e " events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; server { listen 80; server_name localhost; location ~ /group[0-9]/M00 { ngx_fastdfs_module; } } }">/usr/local/nginx/conf/nginx.conf# 清理文件RUN rm -rf ${HOME}/*RUN apk del gcc libc-dev make openssl-dev# 配置启动脚本,在启动时中根据环境变量替换nginx端口、fastdfs端口# 默认nginx端口ENV WEB_PORT 80# 默认fastdfs端口ENV FDFS_PORT 22122# 创建启动脚本RUN echo -e "mkdir -p /var/local/fdfs/storage/data /var/local/fdfs/tracker; ln -s /var/local/fdfs/storage/data/ /var/local/fdfs/storage/data/M00; sed -i "s/listen .*$/listen $WEB_PORT;/g" /usr/local/nginx/conf/nginx.conf; sed -i "s/http.server_port=.*$/http.server_port=$WEB_PORT/g" /etc/fdfs/storage.conf; if [ "$IP" = "" ]; then  IP=`ifconfig eth0 | grep inet | awk '{print $2}'| awk -F: '{print $2}'`; fi sed -i "s/^tracker_server=.*$/tracker_server=$IP:$FDFS_PORT/g" /etc/fdfs/client.conf; sed -i "s/^tracker_server=.*$/tracker_server=$IP:$FDFS_PORT/g" /etc/fdfs/storage.conf; sed -i "s/^tracker_server=.*$/tracker_server=$IP:$FDFS_PORT/g" /etc/fdfs/mod_fastdfs.conf; /etc/init.d/fdfs_trackerd start; /etc/init.d/fdfs_storaged start; /usr/local/nginx/sbin/nginx; ail -f /usr/local/nginx/logs/access.log ">/start.sh && chmod u+x /start.sh# 暴露端口。改为采用host网络,不需要单独暴露端口EXPOSE 80 22122ENTRYPOINT ["/bin/bash
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值