JoeanAmier / TikTokDownloader

TikTok 主页/合辑/直播/视频/图集/原声;抖音主页/视频/图集/收藏/直播/原声/合集/评论/账号/搜索/热榜数据采集工具
https://github.com/JoeanAmier/TikTokDownloader/wiki/Documentation
GNU General Public License v3.0
7.47k stars 1.2k forks source link

K8s部署教程 #161

Closed hlovingness closed 6 months ago

hlovingness commented 6 months ago

配置文件

{
    "accounts_urls": [
        {
            "mark": "账号标识,可以设置为空字符串",
            "url": "账号主页链接",
            "tab": "账号主页类型",
            "earliest": "作品最早发布日期",
            "latest": "作品最晚发布日期"
        }
    ],
    "mix_urls": [
        {
            "mark": "合集标识,可以设置为空字符串",
            "url": "合集链接或者作品链接"
        }
    ],
    "owner_url": {
        "mark": "账号标识,可以设置为空字符串",
        "url": "账号主页链接"
    },
    "root": "",
    "folder_name": "Download",
    "name_format": "create_time type nickname desc",
    "date_format": "%Y-%m-%d %H:%M:%S",
    "split": "-",
    "folder_mode": false,
    "music": false,
    "storage_format": "",
    "cookie": "",
    "dynamic_cover": false,
    "original_cover": false,
    "proxies": "",
    "download": true,
    "max_size": 0,
    "chunk": 1048576,
    "max_retry": 5,
    "max_pages": 0,
    "default_mode": "8",
    "ffmpeg": ""
}

default_mode: "8"

Dockerfile

FROM python:3.12

WORKDIR app

COPY  ./src /app/src
COPY  ./static /app/static
COPY  ./templates /app/templates
COPY  ./Dockerfile /app/Dockerfile
COPY  ./main.py /app/main.py
COPY  ./requirements.txt /app/requirements.txt
# COPY  ./settings.json /app/settings.json 从容易映射进去

RUN  sed -i 's@^.*            if self.console.input(.*$@@'  main.py &&\
     sed -i 's@^.*                    "是否已仔细阅读上述免责声明(YES/NO): ").upper() != "YES":.*$@@'  main.py &&\
     sed -i 's@^.*                return False.*$@@'  main.py &&\
     echo '/bin/bash' >> /entrypoint.sh &&\
     echo 'cd /app' >> /entrypoint.sh &&\
     echo 'echo 5 | /usr/local/bin/python main.py' >> /entrypoint.sh &&\
     chmod +x /entrypoint.sh &&\
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]

k8s配置

# Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: tiktok
  namespace: tool
  labels:
    app: tiktok
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tiktok
  template:
    metadata:
      labels:
        app: tiktok
    spec:
      volumes:
        - name: tiktok
          persistentVolumeClaim:
            claimName: tiktok
      containers:
        - name: tiktok
          image: 'tiktok:v5.3'
          imagePullPolicy: IfNotPresent
          ports:
            - name: tiktok
              protocol: TCP
              containerPort: 5000
          volumeMounts:
            - name: tiktok
              mountPath: /app/Download
          resources:
            limits:
              cpu: 200m
              memory: 512Mi
            requests:
              cpu: 50m
              memory: 128Mi

---
apiVersion: v1
kind: Service
metadata:
  name: tiktok
  namespace: tool
  annotations:
    traefik.ingress.kubernetes.io/service.sticky.cookie: "true"
    traefik.ingress.kubernetes.io/service.sticky.cookie.name: "sticky"
    traefik.ingress.kubernetes.io/service.sticky.cookie.secure: "true"
spec:
  ports:
  - name: http
    protocol: TCP
    port: 5000
  selector:
    app: tiktok
# PersistentVolume
apiVersion: v1
kind: PersistentVolume
metadata:
  name: tiktok
  namespace: tool
spec:
  storageClassName: "nfs-storage"
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 10Gi
  persistentVolumeReclaimPolicy: Retain
  nfs:
    path: /data/tiktok
    server: 10.233.1.10

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: tiktok
  namespace: tool
spec:
  storageClassName: "nfs-storage"
  accessModes:
    - ReadWriteMany
  volumeName: "tiktok"
  resources:
    requests:
      storage: 10Gi
# IngressRoute

apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: tiktok
  namespace: tool
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`tiktok.domain.com`) && PathPrefix(`/`)
      kind: Rule
      services:
        - name: tiktok
          port: 5000

  tls:
    certResolver: letsencrypt

附图

image