DouYinSparkFlow

Docker部署

前言

我对docker的了解也止步于知道这个东西的存在,以及知道这个东西的大致作用,但是从未动手实践过。以及由于国内网络环境,很多地方要配置不同的源,这涉及了更多的linux操作,而我对这一块内容又是非常不熟悉。过去我常借助ai工具帮我完成这些操作,烧了一些token后确实完成地很轻松。但这样下来整个过程对我而言变成了一个黑箱,个人的能力在其中没有提升。借助这个项目,我希望自己能学习到一些linux操作,并在这里做一个记录。

安装基础工具

执行

sudo apt update

这个命令的作用是让 APT 重新获取“软件包目录”
区别apt upgrade,前者可以理解为让应用商店刷新,后者理解为更新软件

apt常见命令

apt update
刷新软件列表
 
apt install xxx
安装软件
 
apt upgrade
升级已安装的软件
 
apt remove xxx
卸载软件
 
apt search xxx
搜索软件
 
apt list --upgradable
查看哪些软件可以升级

执行

sudo apt install -y ca-certificates curl gnupg

安装了`certificates`和`curl`这两个包, 这个`-y`表示默认同意,不需要加yes

这三个东西分别是

ca-certificates
HTTPS 证书验证

curl
从网络下载内容

gnupg
处理 GPG 签名和公钥

语法:

apt install 软件1 软件2 软件3

APT 可以一次安装多个软件。

添加 Docker 官方 GPG key

sudo install -m 0755 -d /etc/apt/keyrings

这里的install不是表示安装,这个是一个 Linux 文件操作命令。
-m 0755表示设置目录权限为0755,-d表示创建目录,最终得到/etc/apt/keyrings,这个目录专门存放 APT 软件源使用的 GPG key。

从阿里云下载 Docker 的 GPG 公钥

使用阿里云镜像:

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \
  | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

设置 GPG key 权限

sudo chmod a+r /etc/apt/keyrings/docker.gpg

添加阿里云 Docker CE 软件源

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再次执行 apt update

sudo apt update

先检查 Docker CE 能否找到

apt-cache policy docker-ce
apt-cache policy docker-compose-plugin

安装 Docker 官方组件

sudo apt install -y \
  docker-ce \
  docker-ce-cli \
  containerd.io \
  docker-buildx-plugin \
  docker-compose-plugin

检查 Docker 服务

sudo systemctl status docker

如果没运行

sudo systemctl enable --now docker

看到

Active: active (running)

检查版本

下面直接贴了

**jsc@iZbp1b35hl2djhb20chyhwZ**:**~**$ docker --version
 
Docker version 29.7.2, build a7dcaa6
 
**jsc@iZbp1b35hl2djhb20chyhwZ**:**~**$ docker compose version
 
Docker Compose version v5.5.0

运行测试容器

sudo docker run hello-world

配置DouYinSparkFlow

确认镜像已经在服务器本地

输入

docker images

输出

ghcr.io/2061360308/douyinsparkflow:latest

创建部署目录

执行

sudo mkdir -p /etc/donyinsparkflow/config
sudo mkdir -p /etc/donyinsparkflow/log

设置 .env 配置文件

sudo vim /etc/donyinsparkflow/config/.env

见链接配置生成器

需要注意:

抖音平台的 cookie 校验增强了,本地和服务器 IP,设备指纹 啥的不匹配。
解决方案就是需要在服务器上扫描登录,目前你的解决方法就是在服务器创建个代理,然后本地浏览器连上后再登录,这样获取的 cookie 就没问题了,比如说用vnc连接浏览器,取 cookie。

创建 compose.yml

输入

sudo vim /etc/donyinsparkflow/compose.yml

进入部署目录

services:
  douyin-spark-flow:
    image: ghcr.io/2061360308/douyinsparkflow:latest
    container_name: douyin-spark-flow
    restart: unless-stopped
    shm_size: 1gb
    environment:
      GITHUB_ACTIONS: "true"
      PYTHONUNBUFFERED: "1"
    volumes:
      - /etc/donyinsparkflow/config/.env:/app/.env:ro
      - /etc/donyinsparkflow/log:/app/logs

检查 Compose 配置有没有语法错误

输入

docker compose config

启动容器

输入

docker compose up -d

这里的-d表示detached,后台运行。

常用命令总结

进入对应目录

cd /etc/donyinsparkflow

启动并放到后台:

docker compose up -d

查看状态

docker compose ps

查看实时日志

docker compose logs -f

重启:

docker compose restart

停止并删除当前 Compose 创建的容器:

docker compose down

停止服务但不删除容器:

docker compose stop

启动已经存在但当前停止的容器:

docker compose start

手动在容器里执行命令:

docker compose exec douyin-spark-flow python main.py