タイトルの通りです。
まず解決した方法は「Dockerfile」に「USER node」を追加する。
これだけです。
以下は発生までの流れと解決策に至った経緯なので興味のある人だけどうぞ。
目次
dockerでnext.jsの環境を作りたい
普段フロント開発は全然やらないのですが、ふとサービス開発を始めようと思いreactを勉強し始めました。
ある程度わかるようになったかなー、くらいでSSRとかSSGを調べていたらreactよりnext.jsの方が良さそうなので次にnext.jsの勉強をすることに。
最初の方は結構作って消してを繰り返すと思ったのでdockerでできたら楽だな、と思って開始しました。
最初はまさかこんなことになるなんて思っていなかっった…。
謎のglob errorにドハマりする…
docker + next.jsは手順を公開してくださっている方が結構いて、create-next-appするだけだったのでそこまで難しくなさそう、と思ったのもつかの間。
タイトルにもあるglob errorでめちゃハマりました…。
glob error [Error: EACCES: permission denied, scandir '/root/.npm/_logs'] {
errno: -13,
code: 'EACCES',
syscall: 'scandir',
path: '/root/.npm/_logs'
}
もともとnodeにそんな詳しくなくてreactの勉強を始めたときに同時に始めた感じなのでnext.jsへの意欲が秒でなくなり始めました。
ユーザー指定をすると良い、という情報を見つけて無事解決
無知ながらもpermissionがないならsudoしたら良いのでは?とかchmodで777とかにしたら良いのでは?とか思ってやってみるも全然だめでした。
諦めてggりまくってたらstackoveflowでDockerfileにUSER nodeを指定した方が良い旨の記載を見つけた。
試しにやってみたらうまくいきました。
↓みたいな感じ。
FROM node:16.13.2
WORKDIR /usr/src/app
USER node
そのリンクを保管しておこうと思ったのですが、タブを開きまくっていたせいで紛失…。
120%忘れるので忘れないようにメモ代わりに今ブログに残しています。。
どなたか本件に関して情報があったら教えていただけると大変うれしいです。