{"id":18283726,"url":"https://github.com/scruffaluff/canvas","last_synced_at":"2026-05-18T19:40:02.364Z","repository":{"id":44620830,"uuid":"254304724","full_name":"scruffaluff/canvas","owner":"scruffaluff","description":"Docker images designed for containerized development.","archived":false,"fork":false,"pushed_at":"2022-02-04T05:06:38.000Z","size":263,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-15T03:08:22.374Z","etag":null,"topics":["development","docker"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/scruffaluff.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-09T07:44:02.000Z","updated_at":"2022-02-04T05:02:32.000Z","dependencies_parsed_at":"2022-09-01T05:01:19.192Z","dependency_job_id":null,"html_url":"https://github.com/scruffaluff/canvas","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/scruffaluff/canvas","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scruffaluff%2Fcanvas","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scruffaluff%2Fcanvas/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scruffaluff%2Fcanvas/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scruffaluff%2Fcanvas/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scruffaluff","download_url":"https://codeload.github.com/scruffaluff/canvas/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scruffaluff%2Fcanvas/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272847106,"owners_count":25003135,"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-08-30T02:00:09.474Z","response_time":77,"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":["development","docker"],"created_at":"2024-11-05T13:10:31.387Z","updated_at":"2026-05-18T19:39:57.336Z","avatar_url":"https://github.com/scruffaluff.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Canvas\n\n![](https://img.shields.io/badge/code%20style-black-000000.svg)\n![](https://img.shields.io/github/repo-size/scruffaluff/canvas)\n![](https://img.shields.io/github/license/scruffaluff/canvas)\n\n---\n\n\u003c!-- prettier-ignore --\u003e\n**Docker Hub**: https://hub.docker.com/repository/docker/scruffaluff/canvas\n\n**Source Code**: https://github.com/scruffaluff/canvas\n\n---\n\n[Canvas](https://scruffaluff.github.io/canvas) is a set of Docker image tags\ndesigned to support development in containers. Each tag contains distinct set of\ndevelopment features or is a combination of other tags. The current tags are\n\n- all\n- csharp\n- go\n- python\n- rust\n- slim\n- typescript\n- vscode\n\nThe latest version of each tag has a Docker Hub path of\n`scruffaluff/canvas:\u003ctag\u003e` or a version path\n`scruffaluff/canvas:\u003cversion\u003e-\u003ctag\u003e` except for the `all` tag. It has respective\npaths `scruffaluff/canvas:latest` and `scruffaluff/canvas:\u003cversion\u003e`.\n\n## Getting Started\n\n### Installation\n\nCanvas can be installed by pulling the Docker image.\n\n```bash\ndocker pull scruffaluff/canvas:latest\n```\n\n### Usage\n\nEach Canvas image expects to use `/home/canvas/host` as a volume mount to the\nuser's `$HOME` folder.\n\nCanvas can avoid UID permission errors on Linux by explicitly passing it your\nuser UID with `-u=\u003cuid\u003e:\u003cuid\u003e` in the command line or setting\n`user: \u003cuid\u003e:\u003cuid\u003e` in a compose file.\n\nThe following compose file exposes the expected ports, solves Linux UID errors\nfor Linux user 1005, and mounts the user's home directory.\n\n```yaml\nversion: \"3.3\"\nservices:\n  canvas:\n    container_name: canvas\n    command: bash\n    image: scruffaluff/canvas:latest\n    ports:\n      - \"8080:8080\"\n      - \"9765:9765\"\n    restart: always\n    tty: true\n    user: \"1005:1005\"\n    volumes:\n      - \"./:/home/canvas/host\"\n```\n\n### VSCode\n\nCanvas tags following the formats `latest`, `\u003cversion\u003e`, `vscode`, and\n`\u003cversion\u003e-vscode` have built-in VSCode servers with\n[Code Server](https://github.com/cdr/code-server).\n\nTo run a HTTP VSCode server change the Docker command to\n\n```console\ncode-server --bind-addr=0.0.0.0:9765\n```\n\nTo run a HTTPS VSCode server with existing TLS certificates signed by a CA,\nchange the Docker command to\n\n```console\ncode-server --bind-addr=0.0.0.0:9765 --cert=\u003ccert_path\u003e --cert-key=\u003ckey_path\u003e\n```\n\nFor working with self-signed certificates see\n[mkcert](https://github.com/FiloSottile/mkcert).\n\n## Contributing\n\n## License\n\nLicensed under the [MIT](license.txt) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscruffaluff%2Fcanvas","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscruffaluff%2Fcanvas","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscruffaluff%2Fcanvas/lists"}