5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

同僚の作成したdockerコンテナをbuildする際にコケたポイントメモ

Last updated at Posted at 2020-09-10

初めに

同僚が作成してくれたnodeのdockerコンテナをbuildする際に何点かコケたポイントがありましたのでメモしてみます。
同様のケースで嵌っている方がいたら参考になれたらと思います!

前提

コンテナを作成してくれた人のPC
Mac Pro
こちらの環境では一発docker-compose up --buildを流せばbuildとupが通る
私のPC
Windows10 Pro
npm --version
6.14.5
数回コケる
コンテナの構成
Node→image: node:latest
MySQL→image: mysql:5.7
Nginx→image: nginx:latest

Cannot create container for service mysql: Conflict

image.png

既に__mysql__という名のコンテナが存在するからコンフリクトするぞというエラーですね。
他のnodeやnginxも同様に発生しました。
良くデフォルトの名前でコンテナ名をつける事が多いので、__プロジェクト毎にコンテナ名をAservice_mysqlとかユニークな名前を指定する__とスムーズかも知れませんね。
既に存在した__mysql__コンテナはもう殆ど動かないプロジェクトのものでしたので、

docker rm コンテナID

で__削除__しました。

npm ERR! enoent ENOENT: no such file or directory, rename '/src/node_modules/constantinople' -> '/src/node_modules/.constantinople.DELETE'

constantinopleが見つからないと怒られました。
constantinopleは定数の評価で使用するモジュールのようですね。
https://www.npmjs.com/package/constantinople
__使用しているnpmのバージョンを最新にアップデートし解決__しました。
6.14.5→6.14.8

npm install -g npm

仮にこの方法で直らなかった場合、単にnpm install時にmoduleの中身が破損しているパターンや、package-lock.jsonが各モジュールを良くない組み合わせのバージョンで固定しているパターンが考えられるので、
node_modulesの中身をすべて削除する
package-lock.jsonを削除して再度npm installする
を試してみてください。

npm ERR! Maximum call stack size exceeded

Nodeの最大コールスタックサイズを超えると発生するようです。
何でMacで起きないのにWindowsでは起きるんだ・・・。
__npmのキャッシュを削除__して__再度buildしたら問題なく起動__することができました。

npm cache clean --force

参考:https://www.it-swarm.dev/ja/javascript/npm%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E6%9C%80%E5%A4%A7%E3%82%B3%E3%83%BC%E3%83%AB%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E8%B6%85%E3%81%88%E3%81%BE%E3%81%97%E3%81%9F/829336672/
ちなみにnodeのstackサイズを変更すれば暫定的にこのコールスタックサイズ問題は解決しますが、
Nodeのパフォーマンスが悪くなる、最悪動かなくなる恐れがあるので止めた方が無難みたいです。。

最後に

同じ開発環境を瞬時に構築できるdockerは開発シーンに必須といえるツールになっていますね!
異なるOSでも動くのは素敵です。

5
0
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
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?