{"id":20733781,"url":"https://github.com/nubank/vessel","last_synced_at":"2025-07-25T03:11:38.221Z","repository":{"id":53195274,"uuid":"241475914","full_name":"nubank/vessel","owner":"nubank","description":"A containerization tool for Clojure applications","archived":false,"fork":false,"pushed_at":"2024-11-04T17:59:21.000Z","size":346,"stargazers_count":45,"open_issues_count":8,"forks_count":1,"subscribers_count":385,"default_branch":"master","last_synced_at":"2025-04-23T22:56:26.430Z","etag":null,"topics":["clojure","containers","docker","oci"],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nubank.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":"2020-02-18T21:55:36.000Z","updated_at":"2025-04-16T04:10:33.000Z","dependencies_parsed_at":"2024-11-17T05:27:21.461Z","dependency_job_id":"5844faa7-72c8-432c-ac1c-129511c6e70b","html_url":"https://github.com/nubank/vessel","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nubank%2Fvessel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nubank%2Fvessel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nubank%2Fvessel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nubank%2Fvessel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nubank","download_url":"https://codeload.github.com/nubank/vessel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250528720,"owners_count":21445513,"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":["clojure","containers","docker","oci"],"created_at":"2024-11-17T05:27:06.573Z","updated_at":"2025-04-23T22:56:33.495Z","avatar_url":"https://github.com/nubank.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vessel\n\n![Workflow](https://github.com/nubank/vessel/workflows/Vessel%20Tests/badge.svg?branch=master)\n\nA containerization tool for Clojure applications. It uses [Google Jib](https://github.com/GoogleContainerTools/jib) to perform this task.\n\n## Usage\n\n\u003e `build`:\n\nBuild a Clojure application\n\n| Option | Default | Description |\n| -- | -- | -- |\n| `-c` `--classpath PATHS` | `--` | Directories and zip/jar files on the classpath in the same format expected by the java command |\n| `-s` `--source-path PATH` | `--` | Directories containing source files. This option can be repeated many times |\n| `-m` `--main-class NAMESPACE` | `--` | Namespace that contains the application's entrypoint, with a :gen-class directive and a -main function |\n| `-r` `--resource-path PATH` | `--` | Directories containing resource files. This option can be repeated many times |\n| `-o` `--output PATH` | `--` | Directory where the application's files will be written to |\n| `-C` `--compiler-options OPTIONS` | No | Options provided to the Clojure compiler, see `clojure.core/*compiler-options*` |\n\n\u003e `containerize`:\n\nContainerize a Clojure application\n\n| Option | Default | Description |\n| -- | -- | -- |\n| `-a` `--app-root PATH` | `\"/app\"` | app root of the container image. Classes and resource files will be copied to relative paths to the app root |\n| `-c` `--classpath PATHS` | `--` | Directories and zip/jar files on the classpath in the same format expected by the java command |\n| `-e` `--extra-path PATH` | `--` | extra files to be copied to the container image. The value must be passed in the form source:target or source:target@churn and this option can be repeated many times |\n| `-i` `--internal-deps REGEX` | `--` | java regex to determine internal dependencies. Can be repeated many times for a logical or effect |\n| `-m` `--main-class NAMESPACE` | `--` | Namespace that contains the application's entrypoint, with a :gen-class directive and a -main function |\n| `-M` `--manifest PATH` | `--` | manifest file describing the image to be built |\n| `-o` `--output PATH` | `\"image.tar\"` | path to save the tarball containing the built image |\n| `-p` `--project-root PATH` | `--` | root dir of the Clojure project to be built |\n| `-P` `--preserve-file-permissions` | `--` | Preserve original file permissions when copying files to the container. If not enabled, the default permissions for files are 644 |\n| `-s` `--source-path PATH` | `--` | Directories containing source files. This option can be repeated many times |\n| `-r` `--resource-path PATH` | `--` | Directories containing resource files. This option can be repeated many times |\n| `-u` `--user USER` | `root` | Define the default user for the image |\n| `-C` `--compiler-options OPTIONS` | `nil` | Options provided to the Clojure compiler, see `clojure.core/*compiler-options*` |\n\n\u003e `image`:\n\nGenerate an image manifest, optionally by extending a base image and/or merging other manifests\n\n| Option | Default | Description |\n| -- | -- | -- |\n| `-a` `--attribute KEY-VALUE` | `--` | Add the attribute in the form key:value to the manifest. This option can be repeated multiple times |\n| `-b` `--base-image PATH` | `--` | Manifest file describing the base image |\n| `-m` `--merge-into PATH` | -- | Manifest file to be merged into the manifest being created. This option can be repeated multiple times |\n| `-o` `--output PATH` | `stdout` | Write the manifest to path instead of stdout |\n| `-r` `--registry REGISTRY` | `\"docker.io\"` | Image registry |\n| `-R` `--repository REPOSITORY` | -- | Image repository |\n| `-t` `--tag TAG` | -- | Image tag. When omitted uses a SHA-256 digest of the resulting manifest |\n\n\u003e `manifest`:\n\nGenerate arbitrary manifests\n\n| Option | Default | Description |\n| -- | -- | -- |\n| `-a` `--attribute KEY-VALUE` | `[]` | Add the attribute in the form key:value to the manifest. This option can be repeated multiple times |\n| `-o` `--output PATH` | `stdout` | \"Write the manifest to path instead of stdout\" |\n| `-O` `--object OBJECT` | `--` | Object under which attributes will be added |\n\n\u003e `push`:\n\nPush a tarball to a registry\n\n| Option | Default | Description |\n| -- | -- | -- |\n| `-t` `--tarball PATH` | `--` | Tar archive containing image layers and metadata files |\n| `-a` `--allow-insecure-registries` | `--` | Allow pushing images to insecure registries |\n| `-A` `--anonymous` | `--` | Do not authenticate on the registry; push anonymously |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnubank%2Fvessel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnubank%2Fvessel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnubank%2Fvessel/lists"}