Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: 将 noneflow 和 nonetest 的 Dockerfile 统一存放在 docker 文件夹下 #338

Merged
merged 10 commits into from
Dec 30, 2024
45 changes: 44 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,32 @@ jobs:
type=semver,pattern={{version}}
type=ref,event=branch

- name: Cache buildkit
uses: actions/cache@v4
id: cache
with:
path: |
var-cache-apt
var-lib-apt
root-cache-uv
key: cache-${{ hashFiles('docker/noneflow.dockerfile') }}

- name: Inject cache into docker
uses: reproducible-containers/[email protected]
with:
cache-map: |
{
"var-cache-apt": "/var/cache/apt",
"var-lib-apt": "/var/lib/apt",
"root-cache-uv": "/root/.cache/uv"
}
skip-extraction: ${{ steps.cache.outputs.cache-hit }}

- name: Build and Publish
uses: docker/build-push-action@v6
with:
context: .
file: ./docker/noneflow.dockerfile
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
Expand Down Expand Up @@ -101,11 +123,32 @@ jobs:
type=semver,pattern={{version}}
type=ref,event=branch

- name: Cache buildkit
uses: actions/cache@v4
id: cache
with:
path: |
var-cache-apt
var-lib-apt
root-cache-uv
key: cache-${{ hashFiles('docker/nonetest.dockerfile') }}

- name: Inject cache into docker
uses: reproducible-containers/[email protected]
with:
cache-map: |
{
"var-cache-apt": "/var/cache/apt",
"var-lib-apt": "/var/lib/apt",
"root-cache-uv": "/root/.cache/uv"
}
skip-extraction: ${{ steps.cache.outputs.cache-hit }}

- name: Build and Publish
uses: docker/build-push-action@v6
with:
context: .
file: ./src/providers/docker_test/Dockerfile
file: ./docker/nonetest.dockerfile
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.metadata.outputs.tags }}
labels: ${{ steps.metadata.outputs.labels }}
Expand Down
21 changes: 0 additions & 21 deletions Dockerfile

This file was deleted.

34 changes: 34 additions & 0 deletions docker/noneflow.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# 这样能分别控制 uv 和 Python 版本
FROM python:3.13.1-slim
COPY --from=ghcr.io/astral-sh/uv:0.5.11 /uv /bin/uv

# 设置时区
ENV TZ=Asia/Shanghai

# 启用字节码编译,加速 NoneFlow 启动
ENV UV_COMPILE_BYTECODE=1

# 在不更新 uv.lock 文件的情况下运行
ENV UV_FROZEN=1

# 从缓存中复制而不是链接,因为缓存是挂载的
ENV UV_LINK_MODE=copy

# 安装依赖
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt update && apt-get --no-install-recommends install -y git

# Python 依赖
COPY pyproject.toml uv.lock /app/
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --project /app/ --no-dev

# 将可执行文件放在环境的路径前面
ENV PATH="/app/.venv/bin:$PATH"

# NoneFlow 本体
COPY bot.py .env /app/
COPY src /app/src/

CMD ["uv", "run", "--project", "/app/", "--no-dev", "/app/bot.py"]
40 changes: 40 additions & 0 deletions docker/nonetest.dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# 这样能分别控制 uv 和 Python 版本
FROM python:3.13.1-slim
COPY --from=ghcr.io/astral-sh/uv:0.5.11 /uv /bin/uv

WORKDIR /app

# 设置时区
ENV TZ=Asia/Shanghai

# 启用字节码编译,加速 NoneFlow 启动
ENV UV_COMPILE_BYTECODE=1

# 在不更新 uv.lock 文件的情况下运行
ENV UV_FROZEN=1

# 从缓存中复制而不是链接,因为缓存是挂载的
ENV UV_LINK_MODE=copy

# OpenCV 所需的依赖
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt update && apt-get install -y ffmpeg libsm6 libxext6

# 插件测试需要 Poetry
ENV PATH="${PATH}:/root/.local/bin"
RUN --mount=type=cache,target=/root/.cache/uv \
uv tool install poetry

# Python 依赖
COPY pyproject.toml uv.lock /app/
RUN --mount=type=cache,target=/root/.cache/uv \
uv sync --project /app/ --no-dev

# 将可执行文件放在环境的路径前面
ENV PATH="/app/.venv/bin:$PATH"

# NoneFlow 本体
COPY src /app/src/

CMD ["uv", "run", "--project", "/app/", "--no-dev", "-m", "src.providers.docker_test"]
26 changes: 0 additions & 26 deletions src/providers/docker_test/Dockerfile

This file was deleted.

Loading