Swift on Balena
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.
Getting Started
Use this sample project to get started with Swift and Docker on your Raspberry Pi.
Latest Releases
Device Based Images
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 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 (using 64 bit OS) | aarch64 | 5.1 | wlisac/raspberrypi3-64-swift:5.1-build |
Raspberry Pi 4 (using 64 bit OS) | aarch64 | 5.1 | wlisac/raspberrypi4-64-swift:5.1-build |
Generic ARMv7-a HF | armv7hf | 5.1 | wlisac/generic-armv7ahf-swift:5.1-build |
Generic AARCH64 (ARMv8) | aarch64 | 5.1 | wlisac/generic-aarch64-swift:5.1-build |
Architecture Based Images
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 3 (using 64 bit OS) Raspberry Pi 4 (using 64 bit OS) Generic AARCH64 (ARMv8) |
aarch64 | 5.1 | wlisac/aarch64-swift:5.1-build |
Image Variants
There are several image variants available depending on hardware, Linux distribution, and Swift version.
- Devices
- Raspberry Pi (v1 or Zero)
- Raspberry Pi 2
- Raspberry Pi 3
- Raspberry Pi 3 (using 64 bit OS)
- Raspberry Pi 4 (using 64 bit OS)
- Generic ARMv7-a HF
- Generic AARCH64 (ARMv8)
- Linux Distributions
- Debian: Stretch
- Ubuntu: Bionic and Xenial
- Swift Versions
- Swift 4 (
4.2.3
) - Swift 5 (
5.1
,5.0.1
,5.0
)
- Swift 4 (
build
andrun
image variants for multi-stage builds
Image Naming Scheme
The 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)
Image Names
<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.
Image Tags
<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 thebuild
orrun
image variant and is required. Thebuild
variant includes the Swift compiler, Swift Package Manager, and other tools needed to build and run a Swift app from source. Therun
variant is much lighter-weight, does not include the Swift compiler, and is designed to run an already built Swift app. Thebuild
andrun
image variants can be used together in a multi-stage Dockerfile to produce a smaller image that's ready for deployment.
Examples
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 thebuild
variant for building a Swift app from source
wlisac/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 therun
variant for running an already built Swift app
wlisac/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 thebuild
variant for building a Swift app from source
Acknowledgments
Swift 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.