はじめに

Docker(Docker-Compose) で Node.js をバージョン指定してインストールする際に、以下エラーが表示される場合の対処法。

1
2
E: Version 'x.y.z-1nodesource1' for 'nodejs' was not found
ERROR: Service 'xxxx' failed to build: The command '/bin/sh -c apt-get install -y nodejs=x.y.z-1nodesource1' returned a non-zero code: 100

※Docker 関係なくて、単に Ubuntu/Debian の問題な気もするが未確認

TL;DR

  • Docker/Ubuntu で apt-get install -y nodejs=x.y.z-1nodesource1 実行でエラー
    • E: Version 'x.y.z-1nodesource1' for 'nodejs' was not found
  • パッチバージョンでアップデートが無いか確認
    • ex: https://deb.nodesource.com/node_13.x/pool/main/n/nodejs/
  • アップデートがある場合は apt-get 箇所のバージョンを修正する
この記事が参考になった方
ここここからチャージや購入してくれると嬉しいです(ブログ主へのプレゼントではなく、ご自身へのチャージ)
欲しいもの / Wish list

目次

  1. はじめに
  2. TL;DR
  3. 環境・条件
  4. 詳細
    1. 前置き
      1. Ubuntu/Debian で Node.js をバージョン指定してインストール
    2. 問題内容
    3. 解決方法
  5. まとめ
  6. その他・メモ
  7. 参考文献

環境・条件

1
2
3
4
5
6
7
8
$ cat /etc/os-release
PRETTY_NAME="Amazon Linux 2"

$ docker -v
Docker version 18.09.9-ce, build 039a7df

$ docker-compose -v
docker-compose version 1.24.1, build 4667896b

詳細

前置き

Ubuntu/Debian で Node.js をバージョン指定してインストール

Ubuntu/Debian では、Node.js を apt-get 実行時に =<version>-1nodesource1 を付けるとバージョン指定してインストールできる。

1
$ apt-get install -y nodejs=12.16.1-1nodesource1

なので、Dockerfile だと以下のように記述する。

1
RUN apt-get install -y nodejs=12.16.1-1nodesource1

問題内容

で、これで docker-compose build してみると E: Version '12.16.1-1nodesource1' for 'nodejs' was not found となり、ビルドが失敗することがあった。

1
2
3
4
5
6
7
8
9
$ docker-compose build
...
Step 4/12 : RUN apt-get install -y nodejs=12.16.1-1nodesource1
---> Running in 5d8f0ef4af62
Reading package lists...
Building dependency tree...
Reading state information...
E: Version '12.16.1-1nodesource1' for 'nodejs' was not found
ERROR: Service 'xxxx' failed to build: The command '/bin/sh -c apt-get install -y nodejs=12.16.1-1nodesource1' returned a non-zero code: 100

解決方法

なんのことはなく、(自分の場合は)単にバージョン指定が古いのが原因だった。

1
2
-RUN apt-get install -y nodejs=12.16.1-1nodesource1
+RUN apt-get install -y nodejs=12.16.2-1nodesource1

パッチバージョンのアップデートがある場合、古い方をインストールしようとするとエラーになるらしい。(マイナーバージョンでも起こるかも?)細かい理由は不明。

Dockerfile 修正後、docker-compose build 実行したところ問題なくビルドできた。

※以下を参考にした。

まとめ

  • Docker/Ubuntu で apt-get install -y nodejs=x.y.z-1nodesource1 実行でエラー
    • E: Version 'x.y.z-1nodesource1' for 'nodejs' was not found
  • パッチバージョンでアップデートが無いか確認
    • ex: https://deb.nodesource.com/node_13.x/pool/main/n/nodejs/
  • アップデートがある場合は apt-get 箇所のバージョンを修正する

その他・メモ

はじめ、returned a non-zero code: 100 のエラーの方で調べてしまい、下記のページにたどり着いた。

(別に上記ページが悪いわけではないのだが、)キャッシュまわりが悪さしているのかと勘違いしてしまい、ビルド時のオプション変えてみたり、イメージ消してみたりと右往左往してしばらくハマってた。

なお、前から PJ やってた人に聞いてもエラーは起きない(なぜなら手元にビルド済のイメージがあるから)ということもあり、「自分の環境が悪いのか??」とより頭を抱えることになってしまった。

参考文献

関連記事

この記事が参考になった方
ここここからチャージや購入してくれると嬉しいです(ブログ主へのプレゼントではなく、ご自身へのチャージ)
欲しいもの / Wish list