This is a container with all the dependencies for Polyphase Engine pre installed.
1.5K
Universal build environment for the Polyphase Engine — pre-built and pre-configured with every toolchain Polyphase targets, in a single image.
This is the "bare" image: the environment is ready to go, but the engine itself is not compiled in. Mount your engine source tree (or run inside an actions/checkout'd workspace) and build whatever target you need.
| Layer | Purpose |
|---|---|
| Ubuntu 22.04 | glibc 2.35, gcc 11 (libstdc++ GLIBCXX_3.4.30). Forward-compatible with Bookworm, RHEL 9, Ubuntu 24.04+, and most current desktop distros. |
| g++, make, pkg-config | Engine + game compilation. |
| libx11-dev, libasound2-dev, libpulse-dev, libvorbis-dev | Engine link dependencies (windowing, ALSA, PulseAudio streaming, Ogg Vorbis decode). |
| dpkg-dev | .deb packaging (dpkg-deb). |
| python3 | Asset stub generator and other build-time scripts. |
| Vulkan SDK 1.3.275.0 | Headers, loader, validation layers, glslc for SPIR-V shader compilation. VULKAN_SDK, PATH, LD_LIBRARY_PATH, and VK_LAYER_PATH are pre-set. |
| devkitPro pacman + devkitPPC + devkitARM | Cross-compilers for 3DS, GameCube, Wii. DEVKITPRO, DEVKITPPC, DEVKITARM env vars baked in. |
| 3ds-dev, wii-dev, gamecube-tools-git | Console SDK packages (libctru, libwiiuse, etc.). |
| libogc2 + libogc2-libdvm | Modern Extrems fork of libogc, used by Polyphase's GameCube/Wii Makefiles ($(DEVKITPRO)/libogc2/{gamecube,wii}_rules). |
| curl-impersonate | Cloudflare TLS-fingerprint bypass for pkg.devkitpro.org mirror fetches during image rebuilds. |
Setting up a Polyphase build environment from scratch on a fresh machine takes 20–30 minutes of apt installs, Vulkan SDK downloads, dkp-pacman key setup, libogc2 repo configuration, and Cloudflare-403 retries. Hosted CI runners pay this cost on every cold run.
Baking the environment into a single image collapses that to a single docker pull. CI step time dropped by ~25 min per run, and "works on my machine but breaks in CI" is now structurally impossible — both build and verify use byte-identical libc, libstdc++, Vulkan, and devkitPro versions.
This expects you to have Polyphase Engine code cloned locally and to have your terminal/cli tool running inside the engine repo's root directory.
git clone https://github.com/Polyphase-Labs/Polyphase-Engine
cd Polyphase-Engine
FROM polyphaselabs/polyphase-bare:latest
# Add your Polyphase Engine + build steps on top — every toolchain is already there.
COPY . /polyphase
WORKDIR /polyphase
RUN make -C Standalone -f Makefile_Linux_Editor -j$(nproc)
jobs:
build:
runs-on: ubuntu-latest
container:
image: polyphaselabs/polyphase-bare:latest
steps:
- uses: actions/checkout@v4
- run: git config --global --add safe.directory '*'
- run: git submodule update --init --recursive
- run: make -C Standalone -f Makefile_Linux_Editor -j$(nproc)
The Polyphase Engine repo's .github/workflows/verify-build.yml and release.yml use exactly this pattern.
These are set inside the image and inherit into every step:
VULKAN_SDK /opt/vulkan/1.3.275.0/x86_64
DEVKITPRO /opt/devkitpro
DEVKITPPC /opt/devkitpro/devkitPPC
DEVKITARM /opt/devkitpro/devkitARM
PATH includes Vulkan SDK + devkitPro tool/bin paths
LD_LIBRARY_PATH includes Vulkan SDK lib
So glslc, powerpc-eabi-gcc, arm-none-eabi-gcc, and dkp-pacman are all on PATH out of the box.
| Tag | Description |
|---|---|
latest | Tracks the current main branch of Polyphase-Engine/Docker/Dockerfile.base. |
When upgrading a CI workflow, prefer pinning to a digest (@sha256:...) for reproducibility.
This image has dependencies to build Polyphase Engine applications and games for:
The Polyphase headless editor (PolyphaseEditor.elf) drives all of these via:
PolyphaseEditor.elf -headless -project <path/to/.octp> -build <Platform> [embedded]
Docker/Dockerfile.baseTo rebuild locally:
git clone https://github.com/Polyphase-Labs/Polyphase-Engine
cd Polyphase-Engine
docker build -t polyphaselabs/polyphase-bare:latest -f Docker/Dockerfile.base .
docker push polyphaselabs/polyphase-bare:latest
MIT (matches the Polyphase Engine repo). The bundled toolchains retain their respective upstream licenses:
Content type
Image
Digest
sha256:46c71be5d…
Size
1.2 GB
Last updated
6 months ago
docker pull polyphaselabs/polyphase-bare