Skip to content

Commit

Permalink
build: 将 noneflow 和 nonetest 的 Dockerfile 统一存放在 docker 文件夹下 (#338)
Browse files Browse the repository at this point in the history
同时参考 astral-sh/uv-docker-example@main/Dockerfile 调整缓存方法。
  • Loading branch information
he0119 authored Dec 30, 2024
1 parent c0be7ad commit 4fab514
Show file tree
Hide file tree
Showing 5 changed files with 118 additions and 48 deletions.
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.

0 comments on commit 4fab514

Please sign in to comment.