Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/iainsmith/swift-docker
Build & test your swift packages using docker - `swift docker test`
https://github.com/iainsmith/swift-docker
docker opensource swift swift-package-manager swiftpm
Last synced: 16 days ago
JSON representation
Build & test your swift packages using docker - `swift docker test`
- Host: GitHub
- URL: https://github.com/iainsmith/swift-docker
- Owner: iainsmith
- License: mit
- Created: 2018-04-12T12:53:24.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-01T20:43:54.000Z (over 4 years ago)
- Last Synced: 2024-10-15T22:21:19.495Z (about 1 month ago)
- Topics: docker, opensource, swift, swift-package-manager, swiftpm
- Language: Swift
- Homepage:
- Size: 64.5 KB
- Stars: 196
- Watchers: 6
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# swift-docker
A command line tool for building, testing & running your swift package in a docker container.
* [Quick start](#quick-start-for-macOS)
* [Features](#Features)
* [Installation](#Install-swift-docker)
* [Usage](#Usage)
* [Vapor](#Vapor)
* [Docker Labels](#docker-labels)## Quick start for macOS
```sh
brew install iainsmith/formulae/swift-docker # Install swift docker
git clone https://github.com/jpsim/Yams.git # Clone an example package
cd Yams && swift test # Run the tests on your machine
swift docker test # Run the tests in a container
swift docker test --swift 5.1 # Check if the tests pass on swift 5.1
swift docker write-dockerfile # Write a ./Dockerfile to the repo
```## Features
* [x] Test swift packages in one command `swift docker test`
* [x] Use custom images - `swift docker test --image vapor/swift:latest`
* [x] `swift docker build/test/run` commands mirror `swift build/test/run`
* [x] Run your vapor application in a container - `swift docker vapor`
* [x] Cached builds using docker volumes
* [x] Use a mix of docker volumes & bind mounts for fast, small builds.
* [x] Uses the swift docker image that matches the Package.swift manifest.
* [x] Quickly free up space - `swift docker cleanup`
* [x] Create a dockerfile for your project
* [x] Quickly print a command to run the swift repl in the container - `swift docker repl`
* [ ] Create a .dockerignore file to avoid adding .git directory to the image
* [ ] Support multistage slim builds
* [ ] Log output to a file
* [ ] cmake build for running on Windows## Install swift-docker
Install with Homebrew
```sh
brew install iainsmith/formulae/swift-docker
```Install from source
> git clone https://github.com/iainsmith/swift-docker-cli.git
> cd swift-docker
> swift build -c release --disable-sandbox
# copy the binary to somewhere in your path.
> cp ./.build/release/swift-docker ~/binAnd install docker if you don't have it already
* Download the [Docker Mac App](https://www.docker.com/docker-mac).
* Or alternatively install via homebrew `brew cask install docker`## Usage
```bash
OVERVIEW: A simple workflow for building & testing swift packages with dockerRun swift docker --help for subcommand details
Reference - Offical docker images: https://hub.docker.com/_/swiftExamples:
swift docker test
swift docker build -- --configuration release
swift docker run your-executable --flag1
swift docker vaporUSAGE: swift-docker
OPTIONS:
-h, --help Show help information.SUBCOMMANDS:
build Build your swift package in a docker container.
test Test your swift package in a docker container.
run Run your swift package in a docker container.
vapor Run your vapor web application in a container.
build-image Build a docker image for your swift package.
repl print the command to run the swift repl in a container.
cleanup Remove temporary docker images.
write-dockerfile Write a dockerfile to disk.
```## Vapor
Run `swift docker vapor` to run your vapor application in a docker container. This is significantly faster than workflows that require you
to build a docker image as we bind the local directory into the container, and cache the build folder.* You can pass custom arguments to your application by running `swift docker vapor -- arg1 --flag1`.
* Currently the environment is set to production & the port is set to 8080.
* The default docker image is `swift:latest`. You can use a custom image with `swift docker vapor --image vapor/swift:latest`## Docker labels
Each docker image created by `swift-docker` is tagged with two labels.
```
LABEL com.swiftdockercli.action="test/build"
LABEL com.swiftdockercli.folder="your-project-name"
```Running `docker volume ls --filter label=com.swiftdockercli.action=test` will list volumes created by swift-docker test.
## Contributing
If you have suggestions for new commands, features or bug fixes. Please raise an issue or open a PR.
If you find this tool useful in your workflow let me know on twitter [@_iains](https://twitter.com/_iains)
## Credits
swift-docker is built on top of
* [swift-tools-support-core](https://github.com/apple/swift-tools-support-core)
* [swift-argument-parser](https://github.com/apple/swift-argument-parser)