{"id":14263159,"url":"https://github.com/cisagov/skeleton-docker","last_synced_at":"2025-10-14T14:47:16.868Z","repository":{"id":36975339,"uuid":"190634023","full_name":"cisagov/skeleton-docker","owner":"cisagov","description":"A skeleton project for quickly getting a new cisagov Docker container started.","archived":false,"fork":false,"pushed_at":"2025-09-18T18:42:24.000Z","size":1030,"stargazers_count":19,"open_issues_count":13,"forks_count":10,"subscribers_count":4,"default_branch":"develop","last_synced_at":"2025-09-18T20:22:08.491Z","etag":null,"topics":["docker","skeleton"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cisagov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-06-06T18:56:13.000Z","updated_at":"2025-09-03T21:54:19.000Z","dependencies_parsed_at":"2024-02-01T06:31:39.811Z","dependency_job_id":"f9668259-e8b9-4b62-85f3-ff918ec3e055","html_url":"https://github.com/cisagov/skeleton-docker","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/cisagov/skeleton-docker","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisagov%2Fskeleton-docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisagov%2Fskeleton-docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisagov%2Fskeleton-docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisagov%2Fskeleton-docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cisagov","download_url":"https://codeload.github.com/cisagov/skeleton-docker/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cisagov%2Fskeleton-docker/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279019158,"owners_count":26086685,"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","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["docker","skeleton"],"created_at":"2024-08-22T13:02:41.954Z","updated_at":"2025-10-14T14:47:16.853Z","avatar_url":"https://github.com/cisagov.png","language":"Shell","funding_links":[],"categories":["docker"],"sub_categories":[],"readme":"# skeleton-docker 💀🐳 #\n\n[![GitHub Build Status](https://github.com/cisagov/skeleton-docker/workflows/build/badge.svg)](https://github.com/cisagov/skeleton-docker/actions/workflows/build.yml)\n[![CodeQL](https://github.com/cisagov/skeleton-docker/workflows/CodeQL/badge.svg)](https://github.com/cisagov/skeleton-docker/actions/workflows/codeql-analysis.yml)\n\n## Docker Image ##\n\n[![Docker Pulls](https://img.shields.io/docker/pulls/cisagov/example)](https://hub.docker.com/r/cisagov/example)\n[![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/cisagov/example)](https://hub.docker.com/r/cisagov/example)\n[![Platforms](https://img.shields.io/badge/platforms-386%20%7C%20amd64%20%7C%20arm%2Fv6%20%7C%20arm%2Fv7%20%7C%20arm64%20%7C%20ppc64le%20%7C%20riscv64%20%7C%20s390x-blue)](https://hub.docker.com/r/cisagov/example/tags)\n\nThis is a Docker skeleton project that can be used to quickly get a\nnew [cisagov](https://github.com/cisagov) GitHub Docker project\nstarted.  This skeleton project contains [licensing\ninformation](LICENSE), as well as [pre-commit hooks](https://pre-commit.com)\nand [GitHub Actions](https://github.com/features/actions) configurations\nappropriate for Docker containers and the major languages that we use.\n\n## Running ##\n\n### Running with Docker ###\n\nTo run the `cisagov/example` image via Docker:\n\n```console\ndocker run cisagov/example:0.2.2+build.1\n```\n\n### Running with Docker Compose ###\n\n1. Create a `compose.yml` file similar to the one below to use [Docker Compose](https://docs.docker.com/compose/).\n\n    ```yaml\n    ---\n    name: skeleton-docker\n\n    services:\n      example:\n        environment:\n          - ECHO_MESSAGE=\"Hello from Docker Compose\"\n        image: cisagov/example:0.2.2+build.1\n        ports:\n          - protocol: tcp\n            published: \"8080\"\n            target: 8080\n        volumes:\n          - source: \u003cyour_log_dir\u003e\n            target: /var/log\n            type: bind\n    ```\n\n1. Start the container and detach:\n\n    ```console\n    docker compose up --detach\n    ```\n\n## Using secrets with your container ##\n\nThis container also supports passing sensitive values via [Docker\nsecrets](https://docs.docker.com/engine/swarm/secrets/).  Passing sensitive\nvalues like your credentials can be more secure using secrets than using\nenvironment variables.  See the\n[secrets](#secrets) section below for a table of all supported secret files.\n\n1. To use secrets, create a `quote.txt` file containing the values you want set:\n\n    ```text\n    Better lock it in your pocket.\n    ```\n\n1. Then add the secret to your `compose.yml` file:\n\n    ```yaml\n    ---\n    name: skeleton-docker\n\n    secrets:\n      quote_txt:\n        file: quote.txt\n\n    services:\n      example:\n        environment:\n          - ECHO_MESSAGE=\"Hello from Docker Compose\"\n        image: cisagov/example:0.2.2+build.1\n        ports:\n          - protocol: tcp\n            published: \"8080\"\n            target: 8080\n        secrets:\n          - source: quote_txt\n            target: quote.txt\n        volumes:\n          - source: \u003cyour_log_dir\u003e\n            target: /var/log\n            type: bind\n    ```\n\n## Updating your container ##\n\n### Docker Compose ###\n\n1. Pull the new image from Docker Hub:\n\n    ```console\n    docker compose pull\n    ```\n\n1. Recreate the running container by following the [previous instructions](#running-with-docker-compose):\n\n    ```console\n    docker compose up --detach\n    ```\n\n### Docker ###\n\n1. Stop the running container:\n\n    ```console\n    docker stop \u003ccontainer_id\u003e\n    ```\n\n1. Pull the new image:\n\n    ```console\n    docker pull cisagov/example:0.2.2+build.1\n    ```\n\n1. Recreate and run the container by following the [previous instructions](#running-with-docker).\n\n## Updating Python dependencies ##\n\nThis image uses [Pipenv] to manage Python dependencies using a [Pipfile](https://github.com/pypa/pipfile).\nBoth updating dependencies and changing the [Pipenv] configuration in `src/Pipfile`\nwill result in a modified `src/Pipfile.lock` file that should be committed to the\nrepository.\n\n\u003e [!WARNING]\n\u003e The `src/Pipfile.lock` as generated will fail `pre-commit` checks due to JSON formatting.\n\n### Updating dependencies ###\n\nIf you want to update existing dependencies you would run the following command\nin the `src/` subdirectory:\n\n```console\npipenv lock\n```\n\n### Modifying dependencies ###\n\nIf you want to add or remove dependencies you would update the `src/Pipfile` file\nand then update dependencies as you would above.\n\n\u003e [!NOTE]\n\u003e You should only specify packages that are direct requirements of\n\u003e your Docker configuration. Allow [Pipenv] to manage the dependencies\n\u003e of the specified packages.\n\n## Image tags ##\n\nThe images of this container are tagged with [semantic\nversions](https://semver.org) of the underlying example project that they\ncontainerize.  It is recommended that most users use a version tag (e.g.\n`:0.2.2+build.1`).\n\n| Image:tag | Description |\n|-----------|-------------|\n|`cisagov/example:0.2.2+build.1`| An exact release version. |\n|`cisagov/example:0.2`| The most recent release matching the major and minor version numbers. |\n|`cisagov/example:0`| The most recent release matching the major version number. |\n|`cisagov/example:edge` | The most recent image built from a merge into the `develop` branch of this repository. |\n|`cisagov/example:nightly` | A nightly build of the `develop` branch of this repository. |\n|`cisagov/example:latest`| The most recent release image pushed to a container registry.  Pulling an image using the `:latest` tag [should be avoided.](https://vsupalov.com/docker-latest-tag/) |\n\nSee the [tags tab](https://hub.docker.com/r/cisagov/example/tags) on Docker\nHub for a list of all the supported tags.\n\n## Volumes ##\n\n| Mount point | Purpose        |\n|-------------|----------------|\n| `/var/log`  |  Log storage   |\n\n## Ports ##\n\nThe following ports are exposed by this container:\n\n| Port | Purpose        |\n|------|----------------|\n| 8080 | Example only; nothing is actually listening on the port |\n\nThe sample [Docker composition](compose.yml) publishes the\nexposed port at 8080.\n\n## Environment variables ##\n\n### Required ###\n\nThere are no required environment variables.\n\n\u003c!--\n| Name  | Purpose | Default |\n|-------|---------|---------|\n| `REQUIRED_VARIABLE` | Describe its purpose. | `null` |\n--\u003e\n\n### Optional ###\n\n| Name  | Purpose | Default |\n|-------|---------|---------|\n| `ECHO_MESSAGE` | Sets the message echoed by this container.  | `Hello World from Dockerfile` |\n\n## Secrets ##\n\n| Filename     | Purpose |\n|--------------|---------|\n| `quote.txt` | Replaces the secret stored in the example library's package data. |\n\n## Building from source ##\n\nBuild the image locally using this git repository as the [build context](https://docs.docker.com/engine/reference/commandline/build/#git-repositories):\n\n```console\ndocker build \\\n  --tag cisagov/example:0.2.2+build.1 \\\n  https://github.com/cisagov/example.git#develop\n```\n\n## Cross-platform builds ##\n\nTo create images that are compatible with other platforms, you can use the\n[`buildx`](https://docs.docker.com/buildx/working-with-buildx/) feature of\nDocker:\n\n1. Copy the project to your machine using the `Code` button above\n   or the command line:\n\n    ```console\n    git clone https://github.com/cisagov/example.git\n    cd example\n    ```\n\n1. Create the `Dockerfile-x` file with `buildx` platform support:\n\n    ```console\n    ./buildx-dockerfile.sh\n    ```\n\n1. Build the image using `buildx`:\n\n    ```console\n    docker buildx build \\\n      --file Dockerfile-x \\\n      --platform linux/amd64 \\\n      --output type=docker \\\n      --tag cisagov/example:0.2.2+build.1 .\n    ```\n\n## New repositories from a skeleton ##\n\nPlease see our [Project Setup guide](https://github.com/cisagov/development-guide/tree/develop/project_setup)\nfor step-by-step instructions on how to start a new repository from\na skeleton. This will save you time and effort when configuring a\nnew repository!\n\n## Contributing ##\n\nWe welcome contributions!  Please see [`CONTRIBUTING.md`](CONTRIBUTING.md) for\ndetails.\n\n## License ##\n\nThis project is in the worldwide [public domain](LICENSE).\n\nThis project is in the public domain within the United States, and\ncopyright and related rights in the work worldwide are waived through\nthe [CC0 1.0 Universal public domain\ndedication](https://creativecommons.org/publicdomain/zero/1.0/).\n\nAll contributions to this project will be released under the CC0\ndedication. By submitting a pull request, you are agreeing to comply\nwith this waiver of copyright interest.\n\n[Pipenv]: https://pypi.org/project/pipenv/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcisagov%2Fskeleton-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcisagov%2Fskeleton-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcisagov%2Fskeleton-docker/lists"}