{"id":14008157,"url":"https://github.com/concourse/docker-image-resource","last_synced_at":"2026-02-12T23:05:02.401Z","repository":{"id":21008528,"uuid":"24299186","full_name":"concourse/docker-image-resource","owner":"concourse","description":"A resource for docker images","archived":false,"fork":false,"pushed_at":"2025-11-15T04:09:00.000Z","size":12950,"stargazers_count":164,"open_issues_count":57,"forks_count":255,"subscribers_count":34,"default_branch":"master","last_synced_at":"2025-11-15T06:06:40.877Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/concourse.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["taylorsilva"]}},"created_at":"2014-09-21T18:17:17.000Z","updated_at":"2025-11-15T04:09:04.000Z","dependencies_parsed_at":"2026-01-07T23:06:03.946Z","dependency_job_id":null,"html_url":"https://github.com/concourse/docker-image-resource","commit_stats":null,"previous_names":[],"tags_count":31,"template":false,"template_full_name":null,"purl":"pkg:github/concourse/docker-image-resource","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concourse%2Fdocker-image-resource","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concourse%2Fdocker-image-resource/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concourse%2Fdocker-image-resource/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concourse%2Fdocker-image-resource/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/concourse","download_url":"https://codeload.github.com/concourse/docker-image-resource/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/concourse%2Fdocker-image-resource/sbom","scorecard":{"id":113312,"data":{"date":"2025-08-11","repo":{"name":"github.com/concourse/docker-image-resource","commit":"659236ca0fd52c20934075251a742d70f413e093"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.6,"checks":[{"name":"Code-Review","score":2,"reason":"Found 5/17 approved changesets -- score normalized to 2","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":10,"reason":"11 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.11.2 not signed: https://api.github.com/repos/concourse/docker-image-resource/releases/236115565","Warn: release artifact v1.11.1 not signed: https://api.github.com/repos/concourse/docker-image-resource/releases/227480273","Warn: release artifact v1.11.0 not signed: https://api.github.com/repos/concourse/docker-image-resource/releases/222443758","Warn: release artifact v1.10.1 not signed: https://api.github.com/repos/concourse/docker-image-resource/releases/208485839","Warn: release artifact v1.10.0 not signed: https://api.github.com/repos/concourse/docker-image-resource/releases/194712883","Warn: release artifact v1.11.2 does not have provenance: https://api.github.com/repos/concourse/docker-image-resource/releases/236115565","Warn: release artifact v1.11.1 does not have provenance: https://api.github.com/repos/concourse/docker-image-resource/releases/227480273","Warn: release artifact v1.11.0 does not have provenance: https://api.github.com/repos/concourse/docker-image-resource/releases/222443758","Warn: release artifact v1.10.1 does not have provenance: https://api.github.com/repos/concourse/docker-image-resource/releases/208485839","Warn: release artifact v1.10.0 does not have provenance: https://api.github.com/repos/concourse/docker-image-resource/releases/194712883"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: github.com/concourse/.github/SECURITY.md:1","Info: Found linked content: github.com/concourse/.github/SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: github.com/concourse/.github/SECURITY.md:1","Info: Found text in security policy: github.com/concourse/.github/SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Branch-Protection","score":1,"reason":"branch protection is not maximal on development and all release branches","details":["Info: 'allow deletion' disabled on branch 'master'","Warn: 'force pushes' enabled on branch 'master'","Info: 'branch protection settings apply to administrators' is required to merge on branch 'master'","Warn: could not determine whether codeowners review is allowed","Warn: no status checks found to merge onto branch 'master'","Warn: PRs are not required to make changes on branch 'master'; or we don't have data to detect it.If you think it might be the latter, make sure to run Scorecard with a PAT or use Repo Rules (that are always public) instead of Branch Protection settings"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:5","Warn: containerImage not pinned by hash: Dockerfile:25","Warn: containerImage not pinned by hash: Dockerfile:42","Warn: containerImage not pinned by hash: Dockerfile:50","Warn: containerImage not pinned by hash: tests/fixtures/ecr/Dockerfile:1","Warn: containerImage not pinned by hash: tests/fixtures/ecr/Dockerfile.multi:1","Warn: containerImage not pinned by hash: tests/fixtures/ecr/Dockerfile.multi:3","Warn: containerImage not pinned by hash: tests/fixtures/ecr/Dockerfile.multi:5: pin your Docker image by updating ubuntu to ubuntu@sha256:7c06e91f61fa88c08cc74f7e1b7c69ae24910d745357e0dfe1d2c0322aaf20f9","Warn: containerImage not pinned by hash: tests/fixtures/ecr/Dockerfile.multi-ecr:1","Warn: containerImage not pinned by hash: tests/fixtures/ecr/Dockerfile.multi-ecr:3","Warn: containerImage not pinned by hash: tests/fixtures/ecr/Dockerfile.multi-ecr:5","Info:   0 out of  11 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 21 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T17:39:44.822Z","repository_id":21008528,"created_at":"2025-08-15T17:39:44.823Z","updated_at":"2025-08-15T17:39:44.823Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29385212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T22:07:52.078Z","status":"ssl_error","status_checked_at":"2026-02-12T22:07:49.026Z","response_time":55,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":"2024-08-10T11:01:18.441Z","updated_at":"2026-02-12T23:05:02.396Z","avatar_url":"https://github.com/concourse.png","language":"Go","funding_links":["https://github.com/sponsors/taylorsilva"],"categories":["Go"],"sub_categories":[],"readme":"# Docker Image Resource\n\nTracks and builds [Docker](https://docker.io) images.\n\n\u003ca href=\"https://ci.concourse-ci.org/teams/main/pipelines/resource/jobs/build?vars.type=%22docker-image%22\"\u003e\n  \u003cimg src=\"https://ci.concourse-ci.org/api/v1/teams/main/pipelines/resource/jobs/build/badge?vars.type=%22docker-image%22\" alt=\"Build Status\"\u003e\n\u003c/a\u003e\n\nNote: docker registry must be [v2](https://docs.docker.com/registry/spec/api/).\n\n## Source Configuration\n\n* `repository`: *Required.* The name of the repository, e.g.\n`concourse/docker-image-resource`.\n\n  Note: When configuring a private registry which requires a login, the \n  registry's address must contain at least one '.' e.g. `registry.local` \n  or contain the port (e.g. `registry:443` or `registry:5000`).\n  Otherwise docker hub will be used.\n  \n  Note: When configuring a private registry **using a non-root CA**,\n  you must include the port (e.g. :443 or :5000) even though the docker CLI\n  does not require it.\n\n* `tag`: *Optional.* The tag to track. Defaults to `latest`.\n\n* `username`: *Optional.* The username to authenticate with when pushing.\n\n* `password`: *Optional.* The password to use when authenticating.\n\n* `additional_private_registries`: *Optional.* An array of objects with the\n  following format:\n\n  ```yaml\n  additional_private_registries:\n  - registry: example.com/my-private-docker-registry\n    username: my-username\n    password: ((my-secret:my-secret))\n  - registry: example.com/another-private-docker-registry\n    username: another-username\n    password: ((another-secret:another-secret))\n  ```\n\n  Each entry specifies a private docker registry and credentials to be passed\n  to `docker login`. This is used when a Dockerfile contains a FROM instruction\n  referring to an image hosted in a docker registry that requires a login.\n\n* `aws_access_key_id`: *Optional.* AWS access key to use for acquiring ECR\n  credentials.\n\n* `aws_secret_access_key`: *Optional.* AWS secret key to use for acquiring ECR\n  credentials.\n\n* `aws_session_token`: *Optional.* AWS session token (assumed role) to use for acquiring ECR\n  credentials.\n\n* `insecure_registries`: *Optional.* An array of CIDRs or `host:port` addresses\n  to whitelist for insecure access (either `http` or unverified `https`).\n  This option overrides any entries in `ca_certs` with the same address.\n\n* `registry_mirror`: *Optional.* A URL pointing to a docker registry mirror service.\n\n  Note: `registry_mirror` is ignored if `repository` contains an explicitly-declared\n  registry-hostname-prefixed value, such as `my-registry.com/foo/bar`, in which case\n  the registry cited in the `repository` value is used instead of the `registry_mirror`.\n\n* `ca_certs`: *Optional.* An array of objects with the following format:\n\n  ```yaml\n  ca_certs:\n  - domain: example.com:443\n    cert: |\n      -----BEGIN CERTIFICATE-----\n      ...\n      -----END CERTIFICATE-----\n  - domain: 10.244.6.2:443\n    cert: |\n      -----BEGIN CERTIFICATE-----\n      ...\n      -----END CERTIFICATE-----\n  ```\n\n  Each entry specifies the x509 CA certificate for the trusted docker registry\n  residing at the specified domain. This is used to validate the certificate of\n  the docker registry when the registry's certificate is signed by a custom\n  authority (or itself).\n\n  The domain should match the first component of `repository`, including the\n  port. If the registry specified in `repository` does not use a custom cert,\n  adding `ca_certs` will break the check script. This option is overridden by\n  entries in `insecure_registries` with the same address or a matching CIDR.\n\n* `client_certs`: *Optional.* An array of objects with the following format:\n\n  ```yaml\n  client_certs:\n  - domain: example.com\n    cert: |\n      -----BEGIN CERTIFICATE-----\n      ...\n      -----END CERTIFICATE-----\n    key: |\n      -----BEGIN RSA PRIVATE KEY-----\n      ...\n      -----END RSA PRIVATE KEY-----\n  - domain: 10.244.6.2\n    cert: |\n      -----BEGIN CERTIFICATE-----\n      ...\n      -----END CERTIFICATE-----\n    key: |\n      -----BEGIN RSA PRIVATE KEY-----\n      ...\n      -----END RSA PRIVATE KEY-----\n  ```\n\n  Each entry specifies the x509 certificate and key to use for authenticating\n  against the docker registry residing at the specified domain. The domain\n  should match the first component of `repository`.\n\n * `max_concurrent_downloads`: *Optional.* Maximum concurrent downloads.\n\n   Limits the number of concurrent download threads.\n\n * `max_concurrent_uploads`: *Optional.* Maximum concurrent uploads.\n\n   Limits the number of concurrent upload threads.\n\n * `startup_timeout`: *Optional.* Default `120`. The timeout in seconds to wait \n   for the Docker daemon to start. Increase this value if you're experiencing\n   timeouts during Docker daemon startup on slower systems.\n\n## Behavior\n\n### `check`: Check for new images.\n\nThe current image digest is fetched from the registry for the given tag of the\nrepository.\n\n\n### `in`: Fetch the image from the registry.\n\nPulls down the repository image by the requested digest.\n\nThe following files will be placed in the destination:\n\n* `/image`: If `save` is `true`, the `docker save`d image will be provided\n  here.\n* `/repository`: The name of the repository that was fetched.\n* `/tag`: The tag of the repository that was fetched.\n* `/image-id`: The fetched image ID.\n* `/digest`: The fetched image digest.\n* `/rootfs.tar`: If `rootfs` is `true`, the contents of the image will be\n  provided here.\n* `/metadata.json`: Collects custom metadata. Contains the container  `env` variables and running `user`.\n* `/docker_inspect.json`: Output of the `docker inspect` on `image_id`. Useful if collecting `LABEL` [metadata](https://docs.docker.com/engine/userguide/labels-custom-metadata/) from your image.\n\n#### Parameters\n\n* `save`: *Optional.* Place a `docker save`d image in the destination.\n* `rootfs`: *Optional.* Place a `.tar` file of the image in the destination.\n* `skip_download`: *Optional.* Skip `docker pull` of image. Artifacts based\n  on the image will not be present.\n\nAs with all concourse resources, to modify params of the implicit `get` step after each `put` step you may also set these parameters under a `put` `get_params`. For example:\n\n```yaml\nput: foo\nparams: {...}\nget_params: {skip_download: true}\n```\n\n### `out`: Push an image, or build and push a `Dockerfile`.\n\nPush a Docker image to the source's repository and tag. The resulting\nversion is the image's digest.\n\n#### Parameters\n\n* `additional_tags`: *Optional.* Path to a file containing a\n  whitespace-separated list of tags. The Docker build will additionally be\n  pushed with those tags.\n\n* `build`: *Optional.* The path of a directory containing a `Dockerfile` to\n  build.\n\n* `build_args`: *Optional.* A map of Docker build-time variables. These will be\n  available as environment variables during the Docker build.\n  \n  While not stored in the image layers, they are stored in image metadata and\n  so it is recommend to avoid using these to pass secrets into the build\n  context. In multi-stage builds `ARG`s in earlier stages will not be copied\n  to the later stages, or in the metadata of the final stage.\n  \n  The\n  [build metadata](https://concourse-ci.org/implementing-resource-types.html#resource-metadata)\n  environment variables provided by Concourse will be expanded in the values\n  (the syntax is `$SOME_ENVVAR` or `${SOME_ENVVAR}`).\n\n  Example:\n\n  ```yaml\n  build_args:\n    DO_THING: true\n    HOW_MANY_THINGS: 2\n    EMAIL: me@yopmail.com\n    CI_BUILD_ID: concourse-$BUILD_ID\n  ```\n\n* `build_args_file`: *Optional.* Path to a JSON file containing Docker\n  build-time variables.\n\n  Example file contents:\n\n  ```yaml\n  { \"EMAIL\": \"me@yopmail.com\", \"HOW_MANY_THINGS\": 1, \"DO_THING\": false }\n  ```\n\n* `secrets`: *Optional.* A map of Docker build-time secrets. These will be\n  available as mounted paths only during the docker build phase.\n  \n  Secrets are not stored in any metadata or layers, so they are safe to use for\n  access tokens and the like during the build.\n\n  Example:\n\n  ```yaml\n  secrets:\n    secret1: \n      env: BUILD_ID\n    secret2:\n      source: /a/secret/file.txt\n  ```\n\n* `cache`: *Optional.* Default `false`. When the `build` parameter is set,\n  first pull `image:tag` from the Docker registry (so as to use cached\n  intermediate images when building). This will cause the resource to fail\n  if it is set to `true` and the image does not exist yet.\n\n* `cache_from`: *Optional.* An array of images to consider as cache, in order to\n  reuse build steps from a previous build. The array elements are paths to\n  directories generated by a `get` step with `save: true`. This has a similar\n  aim of `cache`, but it loads the images from disk instead of pulling them\n  from the network, so that Concourse resource caching can be used. It also\n  allows more than one image to be specified, which is useful for multi-stage\n  Dockerfiles. If you want to cache an image used in a `FROM` step, you should\n  put it in `load_bases` instead.\n\n* `cache_tag`: *Optional.* Default `tag`. The specific tag to pull before\n  building when `cache` parameter is set. Instead of pulling the same tag\n  that's going to be built, this allows picking a different tag like\n  `latest` or the previous version. This will cause the resource to fail\n  if it is set to a tag that does not exist yet.\n\n* `dockerfile`: *Optional.* The path of the `Dockerfile` in the directory if\n  it's not at the root of the directory.\n\n* `docker_buildkit`: *Optional.* This enables a Docker BuildKit build. The value\n  should be set to 1 if applicable.\n\n* `import_file`: *Optional.* A path to a file to `docker import` and then push.\n\n* `labels`: *Optional.* A map of labels that will be added to the image.\n\n  Example:\n\n  ```yaml\n  labels:\n    commit: b4d4823\n    version: 1.0.3\n  ```\n\n* `labels_file`: *Optional.* Path to a JSON file containing the image labels.\n\n  Example file contents:\n\n  ```json\n  { \"commit\": \"b4d4823\", \"version\": \"1.0.3\" }\n  ```\n\n* `load`: *Optional.* The path of a directory containing an image that was\n  fetched using this same resource type with `save: true`.\n\n* `load_base`: *Optional.* A path to a directory containing an image to `docker\n  load` before running `docker build`. The directory must have `image`,\n  `image-id`, `repository`, and `tag` present, i.e. the tree produced by `/in`.\n\n* `load_bases`: *Optional.* Same as `load_base`, but takes an array to load\n  multiple images.\n\n* `load_file`: *Optional.* A path to a file to `docker load` and then push.\n  Requires `load_repository`.\n\n* `load_repository`: *Optional.* The repository of the image loaded from `load_file`.\n\n* `load_tag`: *Optional.* Default `latest`. The tag of image loaded from `load_file`\n\n* `pull_repository`: *Optional.* **DEPRECATED. Use `get` and `load` instead.** A\n  path to a repository to pull down, and then push to this resource.\n\n* `pull_tag`: *Optional.*  **DEPRECATED. Use `get` and `load` instead.** Default\n  `latest`. The tag of the repository to pull down via `pull_repository`.\n\n* `tag`: **DEPRECATED - Use `tag_file` instead**\n* `tag_file`: *Optional.* The value should be a path to a file containing the name\n  of the tag. When not set, the Docker build will be pushed with tag value set by\n  `tag` in source configuration.\n\n* `tag_as_latest`: *Optional.*  Default `false`. If true, the pushed image will\n  be tagged as `latest` in addition to whatever other tag was specified.\n\n* `tag_prefix`: *Optional.* If specified, the tag read from the file will be\n  prepended with this string. This is useful for adding `v` in front of version\n  numbers.\n\n* `target_name`: *Optional.*  Specify the name of the target build stage. \n  Only supported for multi-stage Docker builds\n\n\n## Example\n\n``` yaml\nresources:\n- name: git-resource\n  type: git\n  source: # ...\n\n- name: git-resource-image\n  type: docker-image\n  source:\n    repository: concourse/git-resource\n    username: username\n    password: password\n\n- name: git-resource-rootfs\n  type: s3\n  source: # ...\n\njobs:\n- name: build-rootfs\n  plan:\n  - get: git-resource\n  - put: git-resource-image\n    params: {build: git-resource}\n    get_params: {rootfs: true}\n  - put: git-resource-rootfs\n    params: {file: git-resource-image/rootfs.tar}\n```\n\n## Development\n\n### Prerequisites\n\n* golang is *required* - version 1.9.x is tested; earlier versions may also\n  work.\n* docker is *required* - version 17.06.x is tested; earlier versions may also\n  work.\n\n### Running the tests\n\nThe tests have been embedded with the `Dockerfile`; ensuring that the testing\nenvironment is consistent across any `docker` enabled platform. When the docker\nimage builds, the test are run inside the docker container, on failure they\nwill stop the build.\n\nRun the tests with the following command:\n\n```sh\ndocker build -t docker-image-resource --target tests .\n```\n\nTo use the newly built image, push it to a docker registry that's accessible to\nConcourse and configure your pipeline to use it:\n\n```yaml\nresource_types:\n- name: docker-image-resource\n  type: docker-image\n  privileged: true\n  source:\n    repository: example.com:5000/docker-image-resource\n    tag: latest\n\nresources:\n- name: some-image\n  type: docker-image-resource\n  ...\n```\n\n### Contributing\n\nPlease make all pull requests to the `master` branch and ensure tests pass\nlocally.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconcourse%2Fdocker-image-resource","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fconcourse%2Fdocker-image-resource","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fconcourse%2Fdocker-image-resource/lists"}