From d8ab687c885e8f49f6cffdd350c1b7f2b73f4ec0 Mon Sep 17 00:00:00 2001 From: Liu Haoyu Date: Fri, 3 Feb 2023 15:39:20 +0800 Subject: [PATCH] ftp文件监听服务创建 --- Dockerfile | 14 ++++++++++++++ README.md | 41 +++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 18 ++++++++++++++++++ docker-entrypoint.sh | 8 ++++++++ mc | Bin 0 -> 25735168 bytes mc_watcher.sh | 9 +++++++++ 6 files changed, 90 insertions(+), 0 deletions(-) create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 docker-entrypoint.sh create mode 100755 mc create mode 100644 mc_watcher.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..cba419e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM ubuntu:18.04 + +ENV LANG C.UTF-8 +ENV TZ=Asia/Shanghai +# Set time zone +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone +RUN mkdir /data +WORKDIR /data +COPY mc /usr/sbin/ +COPY docker-entrypoint.sh /usr/sbin/docker-entrypoint.sh +COPY mc_watcher.sh /usr/sbin/mc_watcher.sh +RUN chmod +x /usr/sbin/mc_watcher.sh +RUN chmod +x /usr/sbin/docker-entrypoint.sh +ENTRYPOINT ["docker-entrypoint.sh"] \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..8357620 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +# Ftp-Watcher + +## Version: +`1.0` + +## 依赖: + - minio + - docker + - docker-compose (optional) + +## 配置参数: + + | 参数 | 说明 | 是否必须 | 例子 | + |-|-|-|-| + | udp_server_ip | udp服务器ip, 用于接收推送文件minio路径 | 是 | 127.0.01 | + | udp_server_port | udp服务器port, 用于接收推送文件minio路径 | 是 | 8080 | + | minio_endpoint | MinIO服务器地址 | 是 | http://localhost:9000 | + | minio_access_key | MinIO 用户名 | 是 | admin | + | minio_secret_key | MinIO密钥 | 是 | 123456 | + | bucket_name | 目标桶名称 | 是 | bucket | + +## 使用方法 + +### Docker-compose + +`docker-compose up -d` + +### Docker + +``` +docker run -id --name my-ftpWatcher \ + --restart always \ + -v ./data:/data \ + -e udp_server_ip='127.0.0.1' \ + -e udp_server_port='8080' \ + -e minio_endpoint='http://localhost:9000' \ + -e minio_access_key='admin' \ + -e minio_secret_key='123456' \ + -e bucket_name='bucket' \ + ftp-watcher:1.0 +``` \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6304060 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +version: "3" + +services: + ftpWatcher: + image: ftp-watcher:1.0 + container_name: ftpWatcher + build: + context: ./ + dockerfile: Dockerfile + volumes: + - ./data:/data + environment: + - udp_server_ip=192.168.60.67 + - udp_server_port=8089 + - minio_endpoint=http://192.168.10.58:6000 + - minio_access_key=minioadmin + - minio_secret_key=minioadmin + - bucket_name=togoftp \ No newline at end of file diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 0000000..c9bea48 --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# mc alias set +mc alias set local ${minio_endpoint} ${minio_access_key} ${minio_secret_key} +nohup mc mirror -w /data/ local/${bucket_name}/ & + +# mc watcher +mc_watcher.sh \ No newline at end of file diff --git a/mc b/mc new file mode 100755 index 0000000..6cc2339 Binary files /dev/null and b/mc differ diff --git a/mc_watcher.sh b/mc_watcher.sh new file mode 100644 index 0000000..ef0afc0 --- /dev/null +++ b/mc_watcher.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +TARGET_DIR="/data/" + +mc watch --recursive local/togoftp | while read events; +do + hostUrl=${events#*//} + echo "${hostUrl#*/}" > /dev/udp/${udp_server_ip}/${udp_server_port} +done \ No newline at end of file -- libgit2 0.21.4