Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wlisac/swift-on-balena
Docker images for Swift on Raspberry Pi and other ARM devices from balena's base images.
https://github.com/wlisac/swift-on-balena
aarch64 armv6 armv7 armv8 balena balenacloud docker iot raspberry-pi-3 raspberry-pi-zero raspberrypi swift
Last synced: 2 months ago
JSON representation
Docker images for Swift on Raspberry Pi and other ARM devices from balena's base images.
- Host: GitHub
- URL: https://github.com/wlisac/swift-on-balena
- Owner: wlisac
- License: mit
- Created: 2019-04-10T19:21:24.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-12-08T21:03:30.000Z (about 3 years ago)
- Last Synced: 2024-09-28T10:21:18.661Z (3 months ago)
- Topics: aarch64, armv6, armv7, armv8, balena, balenacloud, docker, iot, raspberry-pi-3, raspberry-pi-zero, raspberrypi, swift
- Language: Dockerfile
- Homepage:
- Size: 182 KB
- Stars: 174
- Watchers: 8
- Forks: 8
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-embedded-swift - Swift on Balena - <a href="http://github.com/wlisac/swift-on-balena"><img src="https://github.com/wlisac/swift-on-balena/raw/master/Assets/logo.svg?sanitize=true" width=22 align="top"></a> Docker images for Swift on Raspberry Pi and other ARM devices from balena's base images. (Single Board Computers)
README
# 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](https://www.balena.io/docs/reference/base-images/base-images/) and make it easy to build and run Swift apps on ARM.
## Getting Started
Use this [sample project](https://github.com/wlisac/balena-swift-hello-world) 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`](https://hub.docker.com/r/wlisac/raspberry-pi-swift/tags) |
| Raspberry Pi Zero 2 W
(64-bit OS) | aarch64 | 5.5.1 | [`wlisac/raspberrypi0-2w-64-swift:5.5.1-build`](https://hub.docker.com/r/wlisac/raspberrypi0-2w-64-swift/tags) |
| Raspberry Pi 2 | armv7hf | 5.1 | [`wlisac/raspberry-pi2-swift:5.1-build`](https://hub.docker.com/r/wlisac/raspberry-pi2-swift/tags) |
| Raspberry Pi 3 | armv7hf | 5.1 | [`wlisac/raspberrypi3-swift:5.1-build`](https://hub.docker.com/r/wlisac/raspberrypi3-swift/tags) |
| Raspberry Pi 3 (64-bit OS) | aarch64 | 5.5.1 | [`wlisac/raspberrypi3-64-swift:5.5.1-build`](https://hub.docker.com/r/wlisac/raspberrypi3-64-swift/tags) |
| Raspberry Pi 4 (64-bit OS) | aarch64 | 5.5.1 | [`wlisac/raspberrypi4-64-swift:5.5.1-build`](https://hub.docker.com/r/wlisac/raspberrypi4-64-swift/tags) |
| Generic ARMv7-a HF | armv7hf | 5.1 | [`wlisac/generic-armv7ahf-swift:5.1-build`](https://hub.docker.com/r/wlisac/generic-armv7ahf-swift/tags) |
| Generic AARCH64 (ARMv8) | aarch64 | 5.5.1 | [`wlisac/generic-aarch64-swift:5.5.1-build`](https://hub.docker.com/r/wlisac/generic-aarch64-swift/tags) |### 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`](https://hub.docker.com/r/wlisac/rpi-swift/tags) |
| Raspberry Pi 2
Raspberry Pi 3
Generic ARMv7-a HF | armv7hf | 5.1 | [`wlisac/armv7hf-swift:5.1-build`](https://hub.docker.com/r/wlisac/armv7hf-swift/tags) |
| 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`](https://hub.docker.com/r/wlisac/aarch64-swift/tags) |## Image Variants
There are several image variants available depending on hardware, Linux distribution, and Swift version.
- Devices
- Raspberry Pi (v1 or Zero)
- Raspberry Pi Zero 2 W (64-bit OS)
- Raspberry Pi 2
- Raspberry Pi 3
- Raspberry Pi 3 (64-bit OS)
- Raspberry Pi 4 (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.5.1`, `5.1`, `5.0.1`, `5.0`)
- `build` and `run` image variants for [multi-stage builds](https://docs.docker.com/develop/develop-images/multistage-build/)### Image Naming Scheme
The image naming scheme for Swift on Balena supports a subset of [balena's image naming scheme](https://www.balena.io/docs/reference/base-images/base-images/#how-the-image-naming-scheme-works) and follows the pattern below.
```plain
wlisac/--swift:--(build|run)
```#### Image Names
- `` is either the device type or architecture and is required. See the [device list](Documentation/Device%20List.md) for available device names and architecture names.
- `` 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
- `` is the version of Swift and is required.
- `` 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](https://github.com/wlisac/balena-swift-hello-world/blob/b439fddbbda93019ed8747d249efc9fc8bb4c4c7/Dockerfile.raspberrypi3) to produce a smaller image that's ready for deployment.#### Examples
`wlisac/raspberrypi3-swift:5.1-build`
- ``: raspberrypi3 – the Raspberry Pi 3 device type
- ``: omitted – defaulted to Debian
- ``: 5.1 – specifies Swift version 5.1
- ``: omitted – defaulted to Stretch
- `(build|run)`: build – specifies the `build` variant for building a Swift app from source`wlisac/raspberrypi3-ubuntu-swift:4.2.3-bionic-run`
- ``: raspberrypi3 – the Raspberry Pi 3 device type
- ``: ubuntu
- ``: 4.2.3 – specifies Swift version 4.2.3
- ``: bionic – Ubuntu 18.04
- `(build|run)`: run – specifies the `run` variant for running an already built Swift app`wlisac/armv7hf-swift:5.1-build`
- ``: armv7hf – the armv7hf architecture type
- ``: omitted – defaulted to Debian
- ``: 5.1 – specifies Swift version 5.1
- ``: omitted – defaulted to Stretch
- `(build|run)`: build – specifies the `build` 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.
- [uraimo/buildSwiftOnARM](https://github.com/uraimo/buildSwiftOnARM)
- [futurejones/swift-arm64](https://github.com/futurejones/swift-arm64)
- [helje5/dockSwiftOnARM](https://github.com/helje5/dockSwiftOnARM)Join the community in the [swift-arm](https://launchpass.com/swift-arm) Slack channel.