{"id":15180357,"url":"https://github.com/gostevedore/stevedore","last_synced_at":"2025-10-26T19:30:34.971Z","repository":{"id":39740844,"uuid":"329442752","full_name":"gostevedore/stevedore","owner":"gostevedore","description":"Stevedore is a tool for building Docker images at scale, and it is not intended to replace Dockerfile or Buildkit. Instead, Stevedore can be used in conjunction with these tools to help streamline the process of building and promoting multiple Docker images.","archived":false,"fork":false,"pushed_at":"2025-01-14T06:58:00.000Z","size":7318,"stargazers_count":12,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-01-31T22:25:34.505Z","etag":null,"topics":["containers","docker","docker-containers","docker-image","golang","golang-application","gostevedore","microservices","stevedore"],"latest_commit_sha":null,"homepage":"https://gostevedore.github.io","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/gostevedore.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-13T22:05:41.000Z","updated_at":"2025-01-14T06:58:00.000Z","dependencies_parsed_at":"2024-04-01T10:31:29.167Z","dependency_job_id":"f867ec14-2a49-4ccd-9023-30f9221015fd","html_url":"https://github.com/gostevedore/stevedore","commit_stats":{"total_commits":430,"total_committers":3,"mean_commits":"143.33333333333334","dds":0.1813953488372093,"last_synced_commit":"5f2d1750ba616700fa20cc2b0e3fd9a74eb59bc7"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gostevedore%2Fstevedore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gostevedore%2Fstevedore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gostevedore%2Fstevedore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gostevedore%2Fstevedore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gostevedore","download_url":"https://codeload.github.com/gostevedore/stevedore/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238386306,"owners_count":19463339,"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":["containers","docker","docker-containers","docker-image","golang","golang-application","gostevedore","microservices","stevedore"],"created_at":"2024-09-27T16:04:05.746Z","updated_at":"2025-10-26T19:30:34.006Z","avatar_url":"https://github.com/gostevedore.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stevedore\n\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) ![CI Status](https://github.com/gostevedore/stevedore/actions/workflows/ci.yaml/badge.svg)\n\n![stevedore-logo](docs/logo/logo_4_stevedore.png \"Stevedore logo\")\n\nStevedore is a tool for building Docker images at scale, and it is not intended to replace Dockerfile or Buildkit. Instead, Stevedore can be used in conjunction with these tools to help streamline the process of building and promoting multiple Docker images.\n\nOne of the key benefits of using Stevedore is that it provides a consistent way to build Docker images and its descendant images, which can be helpful when dealing with large and complex projects that require multiple images. You can also create a more efficient and automated process for building and promoting Docker images.\n\nOverall, Stevedore is a useful tool for anyone who needs to build and manage large numbers of Docker images, and it can help to improve the experience of building and promoting Docker images at scale.\n\n## [Stevedore website](https://gostevedore.github.io/) - [Documentation](https://gostevedore.github.io/docs/)\n\n- [Stevedore](#stevedore)\n  - [Stevedore website - Documentation](#stevedore-website---documentation)\n  - [Why stevedore?](#why-stevedore)\n  - [Quickstart guide](#quickstart-guide)\n    - [Installation](#installation)\n    - [Initial setup](#initial-setup)\n    - [Build the Docker images for an application](#build-the-docker-images-for-an-application)\n    - [Promote the images to a Docker registry](#promote-the-images-to-a-docker-registry)\n  - [Examples](#examples)\n  - [Contributing](#contributing)\n\n## Why stevedore?\n\nStevedore simplifies the building of Docker images in a standardized way, with the ability to define relationships between them. You can build images from multiple sources, including local files and git repositories, and generate automatic tags for semantic versioning.\n\nStevedore also offers a credentials store for easy authentication to Docker registries and AWS ECR, making image promotion and pushing seamless.\n\n## Quickstart guide\n\n### Installation\n\nTo install Stevedore, use the script provided on the repository:\n\n```sh\nsh -c \"$(curl -fsSL https://raw.githubusercontent.com/gostevedore/stevedore/main/scripts/install.sh)\"\n```\n\nAlternatively, you can visit the [installation guide](https://gostevedore.github.io/docs/getting-started/install) for other methods.\n\n### Initial setup\n\n- Create a folder structure to store image definitions and builder configurations before building Docker images.\n\n```sh\n/ $ mkdir -p /docker/images /docker/builders\n```\n\n- Initialize Stevedore.\n\nWe create a configuration file for this guide, but it can be also defined on environment variables.\n\n```sh\n/ $ cd /docker\n/docker $ stevedore initialize --builders-path builders --credentials-storage-type local --generate-credentials-encryption-key --images-path images --log-path-file /dev/null\n Stevedore configuration successfully created\n```\n\nAfter running this command, you can validate the configuration by using the _get configuration_ subcommand.\n\n```sh\n/docker $ stevedore get configuration\n\n builders_path: builders\n concurrency: 4\n semantic_version_tags_enabled: false\n images_path: images\n log_path: /dev/null\n push_images: false\n semantic_version_tags_templates:\n   - {{ .Major }}.{{ .Minor }}.{{ .Patch }}\n credentials:\n   storage_type: local\n   format: json\n   encryption_key: 1c591ac2d9c2664db265704052c17a67\n```\n\n- Create credentials to log into the Docker registry.\n\nSince you create a credential using a username and password, Stevedore prompts you to enter a password for the specified username.\n\n```sh\n/docker $ stevedore create credentials registry.stevedore.test --username admin\nPassword:\n Credentials 'registry.stevedore.test' successfully created\n```\n\n- Validate that the credentials have been stored.\n\n```sh\n/docker $ stevedore get credentials\nID                      TYPE              CREDENTIALS\nregistry.stevedore.test username-password username=admin\n```\n\nStevedore’s configuration encrypts the credentials content at rest by providing an encryption key.\n\n```sh\n/docker $ cat credentials/82e99d42ee1191bb42fbfb444920104d\n2d067af765e8de39fd76b5cd1a430768a66464208bf8fe0c092bcb146a24feed377b916952494e6cea55187f397aee8c2d90a55ef9882cf85ee97ed5660700afa002767e028b4ea6bde274a524e7100f5729601f2d44caa08a1a102af7f79079723f35953133be56e31d0eaf44f52255a5c94512c74625dca3f00b77f9031d4f48f5cf38293f7a2a90f727c9a5eedf57e001ea8766a6d1e47d20354ad3ca6cf022ee70b97b3598e7377355a7b52f62fab8b6628b230c33cf0234ea1208c0d6ecef65e8e1206e7daf15acbbfb62d77650982c9f487129534b367a7fc2b519fd04538bffe87e57184adabc57e613be4b0e106480f9078c8c1c916b65de0039a3adc6cea70b962c0d93477e114e25a2a160db0218e9312d0df00d9b1044e0b4981982834094a36d8d9e4fd9ed766605c1a0b43ff11219d6e5bebb414e084102ce8cd57e86a658455de5fff927ba9be039be4afd393b7e8137cdefb268ed7c79ff37a60c1be3693372d7890b9f8f7c81fa559719ff83371e080efaee86b239e127a094136d056641a4a58245f71414b53dd96214149c6f54de055064163fa9dcb0a6b274d9269a49e1e4f76a9c0a89ec12d40c577ea1b5c1b3f9f8454f5473518c58e8c139a96335850a6415df7e2d41f5ab383f85d30281fd29493db0f0fb577aba35326cd5063b463a41161888514dbce09ccea5887494733256d74341e2623a5328c656\n```\n\n### Build the Docker images for an application\n\nIn this section, we create an application that has multiple versions and needs to be built from multiple parents.\n\n- Prepare the application.\n\nFirst, let's create the application directory and the Dockerfile.\n\nNote that we use the Dockerfile arguments `image_from_name` and `image_from_tag`, which are automatically generated by Stevedore to provide information about the parent image. Additionally, any arguments defined in the `vars` or `persistent_vars` attributes of the image definition can be used in the Dockerfile when building the image.\n\n```sh\n/ $ mkdir -p /apps/my-app\n/ $ cd /apps/my-app\n/apps/my-app $ cat \u003c\u003c EOF \u003e Dockerfile\nARG image_from_name\nARG image_from_tag\n\nFROM \\${image_from_name}:\\${image_from_tag}\n\nCMD [\"echo\",\"Hey there!\"]\nEOF\n```\n\n- Define a builder.\n\nNext, we need to define the builder for our application. Take into account that to build all the versions in a standardized way we define a single builder, which uses the same Dockerfile.\n\n```sh\n/ $ cd /docker/builders\n/docker/builders $ cat \u003c\u003c EOF \u003e apps.yaml\nbuilders:\n  my-app:\n    driver: docker\n    options:\n      context:\n        - path: /apps/my-app\nEOF\n```\n\nTo confirm that the builder is already available, use the following command:\n\n```sh\n/ $ cd /docker\n/docker $ stevedore get builders\nNAME    DRIVER\nmy-apps docker\n```\n\n- Define the foundational images, the parent images.\n\nBefore creating the image definitions for our application, we define the base images that will serve as a starting point for building the Docker images.\n\n```sh\n/ $ cd /docker/images\n/docker/images $ cat \u003c\u003c EOF \u003e foundational.yaml\nimages:\n  busybox:\n    \"1.36\":\n      persistent_labels:\n        created_at: \"{{ .DateRFC3339Nano }}\"\n    \"1.35\":\n      persistent_labels:\n        created_at: \"{{ .DateRFC3339Nano }}\"\nEOF\n```\n\nThe `persistent_labels` attribute sets in key-value pairs the labels to add on all images built from the parent image. Currently, the `created_at` label sets the current date and time in RFC3339Nano format.\n\n\u003e **NOTE**: Stevedore uses Go's [text/template](https://pkg.go.dev/text/template) package to render the image definitions.\n\n- Specify the image definitions for the application.\n\nIn this step, we define two versions of the application `my-app` in the `applications.yaml` file, version `2.1.0` and `3.2.1`.\n\n```sh\n/docker/images $ cat \u003c\u003c EOF \u003e applications.yaml\nimages:\n  my-app:\n    \"2.1.0\":\n      name: \"{{ .Name }}\"\n      version: \"{{ .Version }}-{{ .Parent.Name }}{{ .Parent.Version }}\"\n      registry: registry.stevedore.test\n      builder: my-app\n      parents:\n        busybox:\n          - \"1.35\"\n    \"3.2.1\":\n      name: \"{{ .Name }}\"\n      version: \"{{ .Version }}-{{ .Parent.Name }}{{ .Parent.Version }}\"\n      registry: registry.stevedore.test\n      builder: my-app\n      parents:\n        busybox:\n          - \"1.35\"\n          - \"1.36\"\nEOF\n```\n\nThe _name_ is set to `{{ .Name }}` which will be replaced by the actual name of the image. The _version_ is set to `{{ .Version }}-{{ .Parent.Name }}{{ .Parent.Version }}` which will be replaced by the actual version of the image and its parent name and version. The _builder_ is set to `my-app`, which is the _global-builder_ previously defined in the `/docker/builders/apps.yaml` file. The _parents_ are set to `busybox:1.35` for `2.1.0` version, `busybox:1.35` and `busybox:1.36` for the `3.2.1` version.\n\nYou can use the following command to ensure that images are already defined.\n\n```sh\n/ $ cd /docker\n/docker $ stevedore get images --tree\n├─── busybox:1.35\n│  ├─── registry.stevedore.test/my-app:3.2.1-busybox1.35\n│  ├─── registry.stevedore.test/my-app:2.1.0-busybox1.35\n├─── busybox:1.36\n│  ├─── registry.stevedore.test/my-app:3.2.1-busybox1.36\n```\n\n- Build the Docker images.\n\nCreate all the Docker images for our application at the same time, with just one command.\n\n```sh\n/docker $ stevedore build my-app\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 Step 1/7 : ARG image_from_name\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 Step 2/7 : ARG image_from_tag\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 Step 3/7 : FROM ${image_from_name}:${image_from_tag}\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 Step 1/7 : ARG image_from_name\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 Step 2/7 : ARG image_from_tag\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 Step 3/7 : FROM ${image_from_name}:${image_from_tag}\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 Step 1/7 : ARG image_from_name\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 Step 2/7 : ARG image_from_tag\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 Step 3/7 : FROM ${image_from_name}:${image_from_tag}\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ‣  1.36:  Pulling from library/busybox\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ‣  205dae5015e7:  Pull complete\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ‣  Digest: sha256:7b3ccabffc97de872a30dfd234fd972a66d247c8cfc69b0550f276481852627c\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ‣  Status: Downloaded newer image for busybox:1.36\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ---\u003e 66ba00ad3de8\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 Step 4/7 : ARG message=my-app!\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ---\u003e Running in 7abead2499e1\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ---\u003e 5f0e093a1a94\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ‣  1.35:  Pulling from library/busybox\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ‣  1.35:  Pulling from library/busybox\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ‣  2461e8255644:  Pull complete\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ‣  2461e8255644:  Pull complete\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ‣  Digest: sha256:f4ed5f2163110c26d42741fdc92bd1710e118aed4edb19212548e8ca4e5fca22\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ‣  Status: Downloaded newer image for busybox:1.35\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ---\u003e f68fa78323e7\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 Step 4/7 : ARG message=my-app!\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ‣  Digest: sha256:f4ed5f2163110c26d42741fdc92bd1710e118aed4edb19212548e8ca4e5fca22\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ‣  Status: Image is up to date for busybox:1.35\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ---\u003e f68fa78323e7\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 Step 4/7 : ARG message=my-app!\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ---\u003e Running in 72d2a3a19bd5\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ---\u003e Running in d317a4adc9a3\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ---\u003e 0116092ba9da\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 Step 5/7 : RUN echo \"Hey there! Welcome to ${message}\" \u003e /message.txt\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ---\u003e 03bf5a7e8561\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 Step 5/7 : RUN echo \"Hey there! Welcome to ${message}\" \u003e /message.txt\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ---\u003e Running in a4c2d4b4ccb4\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ---\u003e Running in 41aacd4c92a7\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ---\u003e 5de239d250df\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 Step 6/7 : CMD [\"cat\",\"/message.txt\"]\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ---\u003e Running in 0c32a6be979e\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ---\u003e e50f09eee688\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 Step 7/7 : LABEL created_at=2023-02-03T22:42:55.122127826Z\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ---\u003e Running in 4068fc05135e\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ---\u003e d56ea6314840\nregistry.stevedore.test/my-app:3.2.1-busybox1.36  ‣ sha256:d56ea631484054906c3daa8289b064b91725714ddcda4e3874d1e0a7b6561c49\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 Successfully built d56ea6314840\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 Successfully tagged registry.stevedore.test/my-app:3.2.1-busybox1.36\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ---\u003e 75869c3433a5\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 Step 6/7 : CMD [\"cat\",\"/message.txt\"]\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ---\u003e Running in 761056fa55b5\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ---\u003e 3e4e261bed5a\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 Step 7/7 : LABEL created_at=2023-02-03T22:42:55.121439497Z\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ---\u003e Running in f03539b96af7\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 ---\u003e 2e362f2c8f26\nregistry.stevedore.test/my-app:2.1.0-busybox1.35  ‣ sha256:2e362f2c8f265633aec978d68ab5dc1e57efbf27cc2fe442dd8b88c4d82e6582\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 Successfully built 2e362f2c8f26\nregistry.stevedore.test/my-app:2.1.0-busybox1.35 Successfully tagged registry.stevedore.test/my-app:2.1.0-busybox1.35\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ---\u003e 0fa400361b6b\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 Step 6/7 : CMD [\"cat\",\"/message.txt\"]\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ---\u003e Running in 1ff331631429\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ---\u003e 778d69df86fa\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 Step 7/7 : LABEL created_at=2023-02-03T22:42:55.121439497Z\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ---\u003e Running in 07ed3cc21395\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 ---\u003e 612c3f025134\nregistry.stevedore.test/my-app:3.2.1-busybox1.35  ‣ sha256:612c3f02513437418e3bd10f784af44efe09b36583b3c1b9ba54138d3158f1f4\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 Successfully built 612c3f025134\nregistry.stevedore.test/my-app:3.2.1-busybox1.35 Successfully tagged registry.stevedore.test/my-app:3.2.1-busybox1.35\n```\n\nValidate the recently created images.\n\n```sh\n/docker $ docker images\nREPOSITORY                       TAG                  IMAGE ID       CREATED         SIZE\nregistry.stevedore.test/my-app   3.2.1-busybox1.35    612c3f025134   2 minutes ago   4.86MB\nregistry.stevedore.test/my-app   3.2.1-busybox1.36    d56ea6314840   2 minutes ago   4.87MB\nregistry.stevedore.test/my-app   2.1.0-busybox1.35    2e362f2c8f26   2 minutes ago   4.86MB\nbusybox                          1.36                 66ba00ad3de8   4 weeks ago     4.87MB\nbusybox                          1.35                 f68fa78323e7   6 weeks ago     4.86MB\n```\n\n### Promote the images to a Docker registry\n\nNow that we already have the images created, and since we did not set the push after the build flag, we promote the images to the Docker registry and push them to the `stable` namespace.\n\n```sh\n/docker $ stevedore promote registry.stevedore.test/my-app:3.2.1-busybox1.36 --promote-image-registry-namespace stable\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ‣  The push refers to repository [registry.stevedore.test/stable/my-app]\n\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ‣  b64792c17e4a:  Pushed\nregistry.stevedore.test/my-app:3.2.1-busybox1.36 ‣  3.2.1-busybox1.36: digest: sha256:b1aa5de2f4bf9c031a2047a87fb5c556d0d436123316cad81078462648e58d4b size: 528\n```\n\n## Examples\n\nThe Stevedore project offers a collection of illustrative examples showcasing the usage of Stevedore. These examples can be found in the [examples](https://github.com/gostevedore/stevedore/tree/main/examples) folder, providing practical insights and guidance on utilizing Stevedore effectively.\n\n## Contributing\n\nThank you for your interest in contributing to Stevedore! All contributions are welcome, whether they are bug reports, feature requests, or code contributions. Please read the [contributor's guide in Stevedore documentation](https://gostevedore.github.io/docs/contribution-guidelines/) to know more about how to contribute.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgostevedore%2Fstevedore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgostevedore%2Fstevedore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgostevedore%2Fstevedore/lists"}