Welcome to Swift on Balena – a set of Docker images for Swift on Raspberry Pi and other ARM devices. These images are based on balena's IoT focused Docker images and make it easy to build and run Swift apps on ARM.
Use this sample project to get started with Swift and Docker on your Raspberry Pi.
Device based images are a great way to get started with Swift on a specific device type.
Device | Architecture | Swift | Docker Image |
---|---|---|---|
Raspberry Pi (v1 or Zero) | armv6 | 5.1 | wlisac/raspberry-pi-swift:5.1-build |
Raspberry Pi Zero 2 W (64-bit OS) |
aarch64 | 5.5.1 | wlisac/raspberrypi0-2w-64-swift:5.5.1-build |
Raspberry Pi 2 | armv7hf | 5.1 | wlisac/raspberry-pi2-swift:5.1-build |
Raspberry Pi 3 | armv7hf | 5.1 | wlisac/raspberrypi3-swift:5.1-build |
Raspberry Pi 3 (64-bit OS) | aarch64 | 5.5.1 | wlisac/raspberrypi3-64-swift:5.5.1-build |
Raspberry Pi 4 (64-bit OS) | aarch64 | 5.5.1 | wlisac/raspberrypi4-64-swift:5.5.1-build |
Generic ARMv7-a HF | armv7hf | 5.1 | wlisac/generic-armv7ahf-swift:5.1-build |
Generic AARCH64 (ARMv8) | aarch64 | 5.5.1 | wlisac/generic-aarch64-swift:5.5.1-build |
Architecture based images are useful when building an image for multiple device types with a common architecture.
Device | Architecture | Swift | Docker Image |
---|---|---|---|
Raspberry Pi (v1 or Zero) | armv6 | 5.1 | wlisac/rpi-swift:5.1-build |
Raspberry Pi 2 Raspberry Pi 3 Generic ARMv7-a HF |
armv7hf | 5.1 | wlisac/armv7hf-swift:5.1-build |
Raspberry Pi Zero 2 W (64-bit OS) Raspberry Pi 3 (64-bit OS) Raspberry Pi 4 (64-bit OS) Generic AARCH64 (ARMv8) |
aarch64 | 5.5.1 | wlisac/aarch64-swift:5.5.1-build |
There are several image variants available depending on hardware, Linux distribution, and Swift version.
4.2.3
)5.5.1
, 5.1
, 5.0.1
, 5.0
)build
and run
image variants for multi-stage buildsThe image naming scheme for Swift on Balena supports a subset of balena's image naming scheme and follows the pattern below.
wlisac/<hardware>-<distro>-swift:<swift_version>-<distro_version>-(build|run)
<hardware>
is either the device type or architecture and is required. See the device list for available device names and architecture names.<distro>
is the Linux distribution. This is optional and will usually default to Debian, but may fall-back to Ubuntu if a Debian variant is not available.<swift_version>
is the version of Swift and is required.<distro_version>
is the version of the Linux distribution and is required if a distribution is specified in the image name.(build|run)
specifies either the build
or run
image variant and is required. The build
variant includes the Swift compiler, Swift Package Manager, and other tools needed to build and run a Swift app from source. The run
variant is much lighter-weight, does not include the Swift compiler, and is designed to run an already built Swift app. The build
and run
image variants can be used together in a multi-stage Dockerfile to produce a smaller image that's ready for deployment.wlisac/raspberrypi3-swift:5.1-build
<hardware>
: raspberrypi3 – the Raspberry Pi 3 device type<distro>
: omitted – defaulted to Debian<swift_version>
: 5.1 – specifies Swift version 5.1<distro_version>
: omitted – defaulted to Stretch(build|run)
: build – specifies the build
variant for building a Swift app from sourcewlisac/raspberrypi3-ubuntu-swift:4.2.3-bionic-run
<hardware>
: raspberrypi3 – the Raspberry Pi 3 device type<distro>
: ubuntu<swift_version>
: 4.2.3 – specifies Swift version 4.2.3<distro_version>
: bionic – Ubuntu 18.04(build|run)
: run – specifies the run
variant for running an already built Swift appwlisac/armv7hf-swift:5.1-build
<hardware>
: armv7hf – the armv7hf architecture type<distro>
: omitted – defaulted to Debian<swift_version>
: 5.1 – specifies Swift version 5.1<distro_version>
: omitted – defaulted to Stretch(build|run)
: build – specifies the build
variant for building a Swift app from sourceSwift on Balena is possible because of the amazing work done by the Swift on ARM community and the projects below.
Join the community in the swift-arm Slack channel.