Sign inSign up

lsposed/syncthing

By lsposed

•Updated about 1 year ago

syncthing

Image
0

246

lsposed/syncthing repository overview

[2025-08-06 12:22:12] - 更新 Dockerfile:
  - 使用 debian-slim 作为基础镜像。
  - 设置时区为 Asia/Shanghai。
  - 安装 wget, curl, 7z, bash。
  - 解压 syncthing-linux-amd64-v1.26.1.tar.gz 到 /syncthing/。
  - 创建 /start.sh 启动脚本,支持 isrun 环境变量条件判断启动。
  - 卸载 7z 并清理 apt 缓存。
  - 清理日志文件和临时文件。
  - 设置工作目录为 /syncthing。
  - 容器启动时执行 /start.sh。
[2025-08-06 13:20:01] - 修复 Dockerfile 并成功构建镜像:
  - 将 `syncthing-linux-amd64-v1.26.1.tar.gz` 更正为 `syncthing-linux-amd64-v1.26.1.tar.zip`。
  - 将解压命令从 `tar -xzf` 更改为 `unzip`。
  - 成功构建 Docker 镜像 `lsxposed/syncthing:v1.26.1`。
[2025-08-06 13:30:57] - 成功创建并测试了 docker-compose.yml,修复了多个问题并实现 Web 界面访问:
  - 创建了包含资源限制、日志配置和网络设置的 docker-compose.yml。
  - 修复了 Syncthing 可执行文件路径问题(从 `/syncthing/syncthing` 到 `/syncthing/syncthing/syncthing`)。
  - 添加了可执行权限 `chmod +x /syncthing/syncthing/syncthing`。
  - 修改了 GUI 监听地址从 `127.0.0.1:8384` 到 `0.0.0.0:8384` 以允许外部访问。
  - 解决了端口冲突,将本地端口映射从 8384 改为 8385。
  - Syncthing Web 界面现在可以通过 http://localhost:8385 成功访问。
[2025-08-06 13:41:39] - 完成启动脚本环境变量功能测试,验证 isrun 条件判断机制:
  - ✅ 测试1:`isrun=[ 1 -eq 1 ]` (始终为true) - 条件立即满足,Syncthing 正常启动
  - ✅ 测试2:`isrun=[ 1 -eq 2 ]` (始终为false) - 脚本循环等待,每5秒输出等待消息
  - ✅ 测试3:`isrun=[ -d "/var/syncthing/data" ]` (存在目录) - 条件满足,正常启动
  - ✅ 测试4:`isrun=[ -d "/home/sync" ]` (不存在目录) - 循环等待直到目录创建后启动
  - 启动脚本的 isrun 环境变量功能完全符合原需求,支持条件判断启动和循环等待机制。
version: '3.8'

services:
  syncthing:
    image: lsxposed/syncthing:v1.26.1
    container_name: syncthing
    restart: always
    
    # 端口映射 - Syncthing Web UI 和同步端口
    ports:
      - "8385:8384"   # Web UI 端口 (映射到本地8385避免冲突)
      - "22000:22000" # 同步端口 TCP
      - "22000:22000/udp" # 同步端口 UDP
      - "21027:21027/udp" # 发现端口
    
    # 卷挂载 - 数据持久化
    volumes:
      - syncthing_config:/var/syncthing/config
      - syncthing_data:/var/syncthing/data
      - ./config:/config
    
    # 环境变量
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
    
    # 资源限制
    deploy:
      resources:
        limits:
          memory: 500M
          cpus: '0.2'
    
    # 日志配置
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    
    # 网络配置(临时注释,因为测试环境不想创建)
    # networks:
    #   - mynetworks1
    #   - mynetworks2

# 卷定义
volumes:
  syncthing_config:
    driver: local
  syncthing_data:
    driver: local

# 网络定义(临时注释)
# networks:
#   mynetworks1:
#     external: true
#   mynetworks2:
#     external: true

# 使用 debian-slim 作为基础镜像
FROM debian:bullseye-slim

# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 安装 wget, curl, 7z, bash 并清理缓存
RUN apt-get update && \
    apt-get install -y --no-install-recommends wget curl p7zip-full bash unzip && \
    rm -rf /var/lib/apt/lists/*

# 将 syncthing 压缩包添加到镜像并解压
# 假设解压后会在当前目录生成一个名为 syncthing-linux-amd64-v1.26.1 的目录,其中包含 syncthing 可执行文件
# 用户要求解压到 /syncthing/,所以需要调整路径
COPY syncthing-linux-amd64-v1.26.1.tar.zip /tmp/syncthing-linux-amd64-v1.26.1.tar.zip
RUN mkdir -p /syncthing && \
    unzip /tmp/syncthing-linux-amd64-v1.26.1.tar.zip -d /syncthing && \
    chmod +x /syncthing/syncthing/syncthing && \
    rm /tmp/syncthing-linux-amd64-v1.26.1.tar.zip

# 编写启动脚本 /start.sh
# 使用 tee 命令写入文件,并设置可执行权限
RUN echo '#!/bin/bash' > /start.sh && \
    echo 'set -e' >> /start.sh && \
    echo '' >> /start.sh && \
    echo 'if [ -n "$isrun" ]; then' >> /start.sh && \
    echo '    while true; do' >> /start.sh && \
    echo '        if eval "$isrun"; then' >> /start.sh && \
    echo '            echo "Condition met: $isrun"' >> /start.sh && \
    echo '            break' >> /start.sh && \
    echo '        else' >> /start.sh && \
    echo '            echo "Condition not met: $isrun. Waiting..."' >> /start.sh && \
    echo '            sleep 5' >> /start.sh && \
    echo '        fi' >> /start.sh && \
    echo '    done' >> /start.sh && \
    echo 'fi' >> /start.sh && \
    echo '' >> /start.sh && \
    echo 'exec /syncthing/syncthing/syncthing -home="/config"' >> /start.sh && \
    chmod +x /start.sh

# 卸载 7z 并清理 apt 缓存
RUN apt-get remove -y p7zip-full && \
    apt-get autoremove -y && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 清理日志文件和临时文件
RUN find /var/log -type f -delete && \
    find / -name '*.log' -type f -print -exec rm -rf {} \; && \
    rm -fr /tmp/*

# 设置工作目录
WORKDIR /syncthing

# 容器启动时执行 /start.sh
ENTRYPOINT ["/start.sh"]

Tag summary

Content type

Image

Digest

sha256:34c7ab080…

Size

60.6 MB

Last updated

about 1 year ago

docker pull lsposed/syncthing:v2.0.0