Skip to content

Commit 5a1f7fc

Browse files
authored
Add Docker GitHub Workflow (0xShug0#51)
* Add Docker GitHub workflow * ci(docker): remove free-disk-space step; make ENGINE_ENABLE_NATIVE_CPU configurable - Drop free-disk-space step (no longer needed with target: full) - Add ENGINE_ENABLE_NATIVE_CPU build-arg (default ON) for local builds - Set OFF in GitHub Actions for cross-arch portability - Re-enable CUDA 13 builds * ci(docker): include model_specs in docker image * ci(docker): make workflow permission more explicit; remove comment in build-args block
1 parent 067369d commit 5a1f7fc

5 files changed

Lines changed: 327 additions & 32 deletions

File tree

.devops/cpu.Dockerfile

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
# Usage:
44
# docker build -f .devops/cpu.Dockerfile -t local/audiocpp:full-cpu .
55

6-
# ============================================================
7-
# [BUILD] Compile all release binaries
8-
# ============================================================
6+
# ── BUILD: Compile all release binaries ───────────────────────────────────────
97
ARG UBUNTU_VERSION=24.04
108
ARG BUILD_DATE=N/A
119
ARG APP_VERSION=N/A
@@ -15,6 +13,7 @@ ARG GCC_VERSION=14
1513
FROM docker.io/ubuntu:$UBUNTU_VERSION AS build
1614

1715
ARG GCC_VERSION=14
16+
ARG ENGINE_ENABLE_NATIVE_CPU=ON
1817

1918
# Install build toolchain
2019
RUN apt-get update && \
@@ -28,12 +27,13 @@ ENV CC=gcc-${GCC_VERSION} CXX=g++-${GCC_VERSION}
2827
WORKDIR /app
2928
COPY . .
3029

31-
# Configure
30+
# Configure and build
3231
RUN cmake -S . -B build \
3332
-DCMAKE_BUILD_TYPE=Release \
3433
-DENGINE_ENABLE_CUDA=OFF \
3534
-DENGINE_ENABLE_VULKAN=OFF \
3635
-DENGINE_ENABLE_OPENMP=ON \
36+
-DENGINE_ENABLE_NATIVE_CPU=$ENGINE_ENABLE_NATIVE_CPU \
3737
-DENGINE_BUILD_EXAMPLES=OFF \
3838
-DENGINE_BUILD_TESTS=OFF \
3939
-DENGINE_BUILD_WARMBENCH=OFF && \
@@ -50,16 +50,14 @@ RUN mkdir -p /app/full && \
5050
cp .devops/entrypoint.sh /app/full/entrypoint.sh && \
5151
chmod +x /app/full/entrypoint.sh
5252

53-
# ============================================================
54-
# [BASE] Shared runtime (OS + common libs)
55-
# ============================================================
53+
# ── BASE: Shared runtime (OS + common libs) ───────────────────────────────────
5654
FROM docker.io/ubuntu:$UBUNTU_VERSION AS base
5755

5856
ARG BUILD_DATE=N/A
5957
ARG APP_VERSION=N/A
6058
ARG APP_REVISION=N/A
61-
ARG IMAGE_URL=https://github.com/0xShug0/audio.cpp
62-
ARG IMAGE_SOURCE=https://github.com/0xShug0/audio.cpp
59+
ARG IMAGE_URL=N/A
60+
ARG IMAGE_SOURCE=N/A
6361

6462
LABEL org.opencontainers.image.created=$BUILD_DATE \
6563
org.opencontainers.image.version=$APP_VERSION \
@@ -81,16 +79,12 @@ RUN apt-get update && \
8179

8280
WORKDIR /app
8381

84-
# ============================================================
85-
# [FULL] All binaries + entrypoint.sh multiplexer
86-
# ============================================================
82+
# ── FULL: All binaries + entrypoint.sh multiplexer ────────────────────────────
8783
FROM base AS full
8884

8985
COPY --from=build /app/full /app
86+
COPY model_specs/ /app/model_specs/
9087

9188
USER ubuntu
9289

93-
HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=15s \
94-
CMD curl -f http://localhost:8080/health || exit 1
95-
9690
ENTRYPOINT ["/app/entrypoint.sh"]

.devops/cuda.Dockerfile

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@
33
# Usage:
44
# docker build -f .devops/cuda.Dockerfile -t local/audiocpp:full-cuda .
55

6-
# ============================================================
7-
# [BUILD] Compile all release binaries with CUDA
8-
# ============================================================
6+
# ── BUILD: Compile all release binaries with CUDA ─────────────────────────────
97
ARG UBUNTU_VERSION=24.04
10-
ARG CUDA_VERSION=12.9.0
8+
ARG CUDA_VERSION=12.9.2
119
ARG BUILD_DATE=N/A
1210
ARG APP_VERSION=N/A
1311
ARG APP_REVISION=N/A
@@ -19,6 +17,7 @@ ARG BASE_CUDA_RUN_CONTAINER=docker.io/nvidia/cuda:${CUDA_VERSION}-runtime-ubuntu
1917
FROM ${BASE_CUDA_DEV_CONTAINER} AS build
2018

2119
ARG GCC_VERSION=14
20+
ARG ENGINE_ENABLE_NATIVE_CPU=ON
2221

2322
# Install build toolchain
2423
RUN apt-get update && \
@@ -32,13 +31,14 @@ ENV CC=gcc-${GCC_VERSION} CXX=g++-${GCC_VERSION} CUDAHOSTCXX=g++-${GCC_VERSION}
3231
WORKDIR /app
3332
COPY . .
3433

35-
# Configure
34+
# Configure and build
3635
RUN cmake -S . -B build \
3736
-DCMAKE_BUILD_TYPE=Release \
3837
-DENGINE_ENABLE_CUDA=ON \
3938
-DENGINE_ENABLE_CUDA_GRAPHS=ON \
4039
-DENGINE_ENABLE_VULKAN=OFF \
4140
-DENGINE_ENABLE_OPENMP=ON \
41+
-DENGINE_ENABLE_NATIVE_CPU=$ENGINE_ENABLE_NATIVE_CPU \
4242
-DENGINE_BUILD_EXAMPLES=OFF \
4343
-DENGINE_BUILD_TESTS=OFF \
4444
-DENGINE_BUILD_WARMBENCH=OFF && \
@@ -55,16 +55,14 @@ RUN mkdir -p /app/full && \
5555
cp .devops/entrypoint.sh /app/full/entrypoint.sh && \
5656
chmod +x /app/full/entrypoint.sh
5757

58-
# ============================================================
59-
# [BASE] Shared runtime (NVIDIA CUDA + common libs)
60-
# ============================================================
58+
# ── BASE: Shared runtime (NVIDIA CUDA + common libs) ──────────────────────────
6159
FROM ${BASE_CUDA_RUN_CONTAINER} AS base
6260

6361
ARG BUILD_DATE=N/A
6462
ARG APP_VERSION=N/A
6563
ARG APP_REVISION=N/A
66-
ARG IMAGE_URL=https://github.com/0xShug0/audio.cpp
67-
ARG IMAGE_SOURCE=https://github.com/0xShug0/audio.cpp
64+
ARG IMAGE_URL=N/A
65+
ARG IMAGE_SOURCE=N/A
6866

6967
LABEL org.opencontainers.image.created=$BUILD_DATE \
7068
org.opencontainers.image.version=$APP_VERSION \
@@ -86,17 +84,12 @@ RUN apt-get update && \
8684

8785
WORKDIR /app
8886

89-
# ============================================================
90-
# [FULL] All binaries + entrypoint.sh multiplexer
91-
# ============================================================
87+
# ── FULL: All binaries + entrypoint.sh multiplexer ────────────────────────────
9288
FROM base AS full
9389

9490
COPY --from=build /app/full /app
91+
COPY model_specs/ /app/model_specs/
9592

9693
USER ubuntu
9794

98-
HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=15s \
99-
CMD curl -f http://localhost:8080/health || exit 1
100-
10195
ENTRYPOINT ["/app/entrypoint.sh"]
102-

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ examples/
55
scripts/
66
docs/
77
tools/
8+
!tools/gguf_convert.cpp
89
build/
910
*.md

0 commit comments

Comments
 (0)