### 说明

项目使用的基础镜像基于官方的python:3.12-slim镜像生成，里面安装了uv，修改了uv的镜像源配置

##### /root/.config/uv/uv.toml 内容

```toml
[[index]]
url = "https://mirrors.aliyun.com/pypi/simple/"
default = true
```

#### 镜像构建

##### Dockerfile的方式构建

```shell
cd /root/workspace/SoraWatermarkCleaner
docker build -t sorawm:{tag} .
```

##### Docker-compose的方式构建

```shell
cd /root/workspace/SoraWatermarkCleaner
docker compose --build sorawm_server
```

##### Docker-compose的方式构建且启动【推荐使用】

```shell
cd /root/workspace/SoraWatermarkCleaner 
docker compose up -d --build sorawm_server
```

#### 容器启动和重启

##### Dockerfile方式

```shell
docker run -d --name sorawm-test -p 5344:5344 1aaffb469053

docker restart {容器ID}
```

##### Docker-compose的方式

```shell
docker compose up {service_name}

docker compose restart {service_name}
```

#### 代码更新

##### Dockerfile的方式，需要重新构建镜像

```shell
cd /root/workspace/SoraWatermarkCleaner
docker build -t sorawm:{tag} .

docker run -d --name sorawm-test -p 5344:5344 1aaffb469053
```

##### Docker-compose的方式
```shell
docker compose restart {service_name}
```

tag建议使用yyyyMMddHHmmss的形式生成 \
项目最终生成的镜像文件比较大，将近9个G，与.venv环境有关，后续考虑优化

#### 生成uv.lock

```shell
RUN uv lock -i https://mirrors.aliyun.com/pypi/simple/
```

生成uv.lock使用阿里的镜像源，原因: 机器上访问官方的镜像源比较慢，需要换成国内的源。

#### 启动脚本 sorawm_start.sh

```shell

#!/bin/bash

source /app/.venv/bin/activate

uv run streamlit run app.py --server.port 8503 --server.headless true --browser.gatherUsageStats false &
uv run python start_server.py --host 0.0.0.0 --port 5344 &

wait

```

前端正确启动方式（关闭交互提示，便于自动化预览）：
uv run streamlit run app.py --server.port 8503 --server.headless true --browser.gatherUsageStats false
后端正确启动方式（关闭交互提示，便于自动化预览）：
uv run python start_server.py --host 0.0.0.0 --port 5344
