{"id":25349858,"url":"https://github.com/metaswitch/floki","last_synced_at":"2025-08-23T15:14:06.400Z","repository":{"id":34363594,"uuid":"178006496","full_name":"Metaswitch/floki","owner":"Metaswitch","description":"Launch containers to help build your software","archived":false,"fork":false,"pushed_at":"2025-03-26T16:11:09.000Z","size":1205,"stargazers_count":69,"open_issues_count":19,"forks_count":21,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-04-12T19:49:32.442Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Metaswitch.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-27T14:03:14.000Z","updated_at":"2025-03-24T18:59:04.000Z","dependencies_parsed_at":"2024-03-26T12:46:11.909Z","dependency_job_id":"7549cff6-db1e-4e1f-8961-352289f8aa0d","html_url":"https://github.com/Metaswitch/floki","commit_stats":{"total_commits":275,"total_committers":19,"mean_commits":"14.473684210526315","dds":0.6581818181818182,"last_synced_commit":"3b71d8a8cdb22da5ddf8f72229444fcad9cc57bd"},"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaswitch%2Ffloki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaswitch%2Ffloki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaswitch%2Ffloki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Metaswitch%2Ffloki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Metaswitch","download_url":"https://codeload.github.com/Metaswitch/floki/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625501,"owners_count":21135513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-14T16:58:25.114Z","updated_at":"2025-04-12T19:50:01.082Z","avatar_url":"https://github.com/Metaswitch.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# floki\n\nFloki was a boatbuilder. Floki now helps you manage interactive containers for building software.\n\n## What is floki?\n\nDocker and kubernetes are great ways to run software, and it is often convenient to use the same containers interactively to get a repeatable and complete build environment. However, using these containers for development is not always straightforward.\n\n`floki` aims to improve the human interface for launching and using interactive docker containers. Instead of remembering or constructing complicated `docker run` commands, or writing custom scripts to launch docker containers, `floki` lets you specify what you want from your docker container in a configuration file. You can then get your environment just by running `floki`. It doesn't replace docker or kubernetes, its an addition to try and improve the human interface for working on a codebase.\n\nThis has several advantages over the usual approaches (custom scripts, or, more commonly, leaving it to the user to figure out)\n\n- an immediate build environment\n- easier to share and on-board new developers\n- a consistent and uniform interface to get a working environment\n\n## Documentation\n\nFor installation, and basic usage, see [getting started](https://metaswitch.github.io/floki/documentation/getting-started/).\n\nFull documentation can be found [here](https://metaswitch.github.io/floki/).\n\n### Quickstart\n\nThis assumes you have already installed `floki` using the installation instructions below.\n\nSuppose we want a build environment based on `alpine:latest` with a C compiler, and `clang` tools. Suppose we want to also have SSH credentials available from the host, so we can, for example, authenticate with a private git server.\n\nFirst create your `Dockerfile`:\n\n```dockerfile\nFROM alpine:latest\n\nRUN apk update \u0026\u0026 apk add alpine-sdk clang openssh\n```\n\nand then add a file called `floki.yaml` to the root of your codebase:\n\n\n```yaml\nimage:\n  build:\n    name: hello-floki\n\nforward_ssh_agent: true\ninit:\n  - echo \"Welcome to the hello-floki build container\"\n```\n\nNow run `floki`. You should see the docker container be built, and you will be dropped into a shell. If you had an `ssh-agent` running on the host before running `floki`, you can run `ssh-add -l` and you should see the same keys loaded as you had on the host.\n\n## Install\n\n### Prerequisites\n\nIt's recommended you add your user to the `docker` group:\n\n```shell\n$ sudo usermod -a -G docker USERNAME\n```\n\nand logout and in again to pick up the changes.\n\nAlternatively you can run `floki` (after installation) with `sudo -E floki`.\n\n### Installation from pre-built binaries\n\nPrecompiled binaries can be downloaded from the releases page (for linux and OSX).\n\nTo obtain `curl` and extract the latest linux binary directly in your shell, run\n\n```shell\n$ curl -L https://github.com/Metaswitch/floki/releases/download/2.1.0/floki-2.1.0-linux.tar.gz | tar xzvf -\n```\n\nYou should be able to run `floki` from your working directory:\n\n```shell\n$ ./floki --version\nfloki 2.1.0\n```\n\nMove it onto your path to run it from anywhere. E.g.\n\n```shell\n$ mv floki /usr/local/bin/\n```\n\nEnjoy!\n\n### Installation from cargo\n\n`floki` can also be installed directly from `cargo`.\n\n```shell\n$ cargo install floki\n```\n\n## Handy features\n\n- Forwarding of `ssh-agent` (useful for authenticating with remote private git servers to pull private dependencies)\n- Docker-in-docker support\n- Forwarding of host user information (allows non-root users to be added and used).\n- volumes (shared, or per-project) for e.g. build caching.\n\n## Contributing\n\nContributors will need to sign their commits to acknowledge the [DCO](DCO)\n\n## TODO\n\nSee issues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaswitch%2Ffloki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetaswitch%2Ffloki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetaswitch%2Ffloki/lists"}