generated from actions/typescript-action
-
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
build: 将 noneflow 和 nonetest 的 Dockerfile 统一存放在 docker 文件夹下 (#338)
同时参考 astral-sh/uv-docker-example@main/Dockerfile 调整缓存方法。
- Loading branch information
Showing
5 changed files
with
118 additions
and
48 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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 }} | ||
|
@@ -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 }} | ||
|
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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"] |
This file was deleted.
Oops, something went wrong.