{"id":19208682,"url":"https://github.com/heiwa4126/go-docker-clock","last_synced_at":"2026-05-09T06:36:37.399Z","repository":{"id":111909788,"uuid":"403806735","full_name":"heiwa4126/go-docker-clock","owner":"heiwa4126","description":"Qiitaにあったコードをそのままコピペして、サポートのスクリプトをつけたGoLangのDockerサンプル。だったのだがずいぶん変わってしまいました","archived":false,"fork":false,"pushed_at":"2026-04-03T04:41:38.000Z","size":28,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-03T12:56:21.428Z","etag":null,"topics":["docker","example","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heiwa4126.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-09-07T01:45:58.000Z","updated_at":"2026-04-03T04:41:37.000Z","dependencies_parsed_at":"2023-03-17T07:16:00.448Z","dependency_job_id":null,"html_url":"https://github.com/heiwa4126/go-docker-clock","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/heiwa4126/go-docker-clock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heiwa4126%2Fgo-docker-clock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heiwa4126%2Fgo-docker-clock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heiwa4126%2Fgo-docker-clock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heiwa4126%2Fgo-docker-clock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heiwa4126","download_url":"https://codeload.github.com/heiwa4126/go-docker-clock/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heiwa4126%2Fgo-docker-clock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32810002,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"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","example","golang"],"created_at":"2024-11-09T13:27:25.956Z","updated_at":"2026-05-09T06:36:37.384Z","avatar_url":"https://github.com/heiwa4126.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# go-docker-clock\n\n[FROM scratch から始める軽量 Docker image for Go \\- Qiita](https://qiita.com/Saint1991/items/dcd6a92e5074bd10f75a)\nにあったコードをそのままコピペして、lint が通るようにしてサポートのスクリプトをつけたもの。\n\n時間を文字列で返すタイムサーバもどき。\n\nGo 1.25 使用\n\n## Docker image を GitHub Package に発行\n\nsemver の tag をつけて GitHub に push することで、\nGitHub Package にイメージをパブリッシュします。\n\n発行先:\n[Package go-docker-clock](https://github.com/heiwa4126/go-docker-clock/pkgs/container/go-docker-clock)\n\n使い方は\n\n```sh\ndocker run --rm -d -p 8080:8080 ghcr.io/heiwa4126/go-docker-clock:latest\ncurl \"localhost:8080/time?tz=Asia/Tokyo\"\n```\n\n**重要**: push の前に `task` (引数なし)を実行しよう。linter が動きます\n\n## 開発準備\n\nlinter などは CI/CD できるよう\n[aquaproj/aqua](https://github.com/aquaproj/aqua)\nで管理しています。\n\nプロジェクトルートで\n\n```sh\naqua i\n```\n\nでインストール。\n(Go 自体は入ってないです。必要なら `aqua i golang/go`)\n\n## 開発\n\n```sh\n# 普通に実行\ntask start\n./smoke-test.sh\ntask stop\n\n# lintとauditとformat\ntask audit\ntask test\ntask lint\ntask fmt\ntask   # 全部まとめて (default action)\n\n# ビルドして実行\ntask build-go\ntask start-go\n./smoke-test.sh\ntask kill\n\n# コンテナ作って実行\ntask build-docker\ntask start-docker\n./smoke-test.sh\ntask stop-docker\n```\n\n## 出力例\n\n```console\n$ ./go-docker-clock \u0026\n$ curl http://localhost:8080/time\n2021-09-07 01:47:04 UTC\n```\n\n## バイナリも Docker image も 2MB 強\n\n```console\n$ docker images go-docker-clock\nREPOSITORY        TAG       IMAGE ID       CREATED          SIZE\ngo-docker-clock   latest    e9161e29eb40   16 minutes ago   2.16MB\n```\n\n→ いろいろ考えて UPX やめました。それでも8MB\n\n## zoneinfo.zip 式をやめる\n\nDockerfileの\n\n```dockerfile\nFROM scratch\n\nADD https://github.com/golang/go/raw/master/lib/time/zoneinfo.zip /zoneinfo.zip\nENV ZONEINFO=/zoneinfo.zip\n# ...\n```\n\nをやめて、ビルド時に `-tags timetzdata` をつける式にした。Go 1.15から使えるらしい。[Go 1.15 Release Notes - The Go Programming Language](https://go.dev/doc/go1.15#time_tzdata)\n\n※ もう1つの方法は `import _ \"time/tzdata\"`\n\nもう1つ\n\n```sh\ntask build-docker-distroless\n```\n\nも作ってみた。\n\n## おまけ - docker imageをローカルファイルにsave/load\n\nセーブ\n\n```sh\ndocker save go-docker-clock | gzip -9 \u003e  go-docker-clock.tar.gz\n```\n\nロード\n\n```sh\nzcat go-docker-clock.tar.gz | docker load\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheiwa4126%2Fgo-docker-clock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheiwa4126%2Fgo-docker-clock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheiwa4126%2Fgo-docker-clock/lists"}