3
1

More than 3 years have passed since last update.

VSCode リモートコンテナの Python3.8 にnvm , nodeのインストールをDockerファイルに記述する

Last updated at Posted at 2021-08-28

リモートコンテナ用のdockerイメージ(Debian11, Python3.8)の環境でnodeを使いたかったので入れた
いろんなOSさわると、遭遇するエラーもさまざま

  • 入れた対象OS
root ➜ /workspaces $ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 11 (bullseye)
Release:        11
Codename:       bullseye

Dockerファイルに記載してnvmとnodeをインストール(Rebuild Containerで実行して1分かからず)

  • 操作しているユーザー環境変数の設定はしていない
  • apt upgrade はしなくても良い
  • node install ではビルドしない(-s 指定しない)
  • install.sh が実行されると、/usr/local/share/nvm に nvmが入っていることを気づかずにやっていてつまづいた

  • 作成したDeockerfile(https://gist.github.com/ssugimoto/acd7fe5d25b9adaf149dd3c8a3bdbf2a )、以下も同じ

FROM mcr.microsoft.com/vscode/devcontainers/python:3.8

RUN apt-get update \
    && apt-get -y install curl \
    && apt-get autoremove -y \
    && apt-get clean -y \

RUN apt-get upgrade \
    && apt-get -y install curl

ENV NVM_DIR /usr/local/share/nvm
ENV NODE_VERSION 12.22.1
#
# Install nvm with node and npm
RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash \
    && . $NVM_DIR/nvm.sh \
    && nvm install $NODE_VERSION \
    && nvm alias default $NODE_VERSION \
    && nvm use default

WORKDIR /workspaces
  • 入れたバージョンの確認
root ➜ /workspaces/test $ 
root ➜ /workspaces/test $ nvm --version
0.38.0
root ➜ /workspaces/test $ node --version
v12.22.1
root ➜ /workspaces/test $ npm --version
6.14.12
root ➜ /workspaces/test $ python --version
Python 3.8.11

エラーの対応

  • /bin/sh: nvm: not found docker , "bash: nvm: command not found"
    nvm コマンドがありません。

    • 手動でインストールすると発生しないけど、Dockerfileだと発生する
    • RUN コマンド1行で(まとめて)記載する必要があるんだけど、1行で記載しても解決できず。
    • そもそもnvmがインストールされる場所が想定と違ってた

参考

ENV NVM_DIR /usr/local/nvm
・・・
. $NVM_DIR/nvm.sh

の2つの箇所、 /usr/local/nvm にはインストールされないので変更が必要

なぜ、node用のリモートコンテナを使わないのか

  • VSCodeリモートコンテナ Debian10 node12(node12または14)の環境が入っているOS Debian10ではPython3.7がインストール済で、Python3.8 を sudo apt-get install python3.8 ではインストールできなかった
  • Pyhon3.8を使うには いくつかの xxx-devライブラリを入れ、 make altinstall する必要があり、コンテナが使えるまでの時間が長すぎた

Dockerファイルに書かないで、通常のインストール

  • ほぼ、以下のコマンド入る(sudo ついてるけど、rootで作業しています)
# sudo apt update
# sudo apt upgrade
# sudo apt-get install curl

nvm のインストール
# curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash
# nvm --version
# nvm install v12.22.1

コンテナビルドに続いて Amplif cli 入れたら3分くらいかかった(176sec)

devcontainer.json に
"postCreateCommand": "npm install -g @aws-amplify/cli@5.3.1",
を追記した場合に、npm install が3分かかった

npm install ログの最後

+ @aws-amplify/cli@5.3.1
added 1404 packages from 775 contributors in 176.666s
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1