Closed1

【Dockerfile】package.jsonやGemfileなどでGitからパッケージを参照したときにエラーになったときの対処法

catnosecatnose

完全にうっかりミスで時間を浪費にしてしまったのでメモ。多くの言語のパッケージ管理システムではgitからパッケージを参照できたりする。例えばpackage.jsonGemfileなどでGitHubなどのリポジトリのソースコードを参照することができる。

package.json
  "dependencies": {
    "package-name": "git+ssh://git@github.com/username/repo-name.git"
  }
gemfile
gem "package-name", github: "catnose99/package-name"", branch: "main"

なのだけど、Dockerイメージビルド時のnpm installbundle installの実行でエラーが出てしまった。
(実際にはCloudBuildでDockerfileのビルドに失敗して気づいた)

👇 Gemfileだとこんな感じでエラーが出た

Step #1: Git error: command `git clone 'https://github.com/catnose99/package-name.git'
Step #1: 
Step #1: Retrying `git clone 'https://github.com/catnose99/package-name.git' "/usr/local/..." --bare --no-hardlinks --quiet` due to error (4/4): Bundler::Source::Git::GitCommandError Git error: command `git clone 'https://github.com/catnose99/package-name.git' "/usr/local/..." --bare --no-hardlinks --quiet` in directory foo-bar has failed.

で、bundle installを行なっているDockerfileをよく見たらgitをインストールしていなかった。

Dockerfile
 RUN apk update \
   && apk upgrade \
+ && apk add --no-cache git ... \
   && ...

gitをインストールするようにしたらパッケージが問題なくダウンロードできるようになった。確かにそれはそうだよね。

このスクラップは2021/03/26にクローズされました