質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.32%
npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

190閲覧

docker-compose upした際のnpm errorを解消したい

matsu_918

総合スコア2

npm

npmは、Node Packaged Modulesの略。Node.jsのライブラリ・パッケージを管理できるツールです。様々なモジュールを簡単にインストールでき、自分でモジュールを作成し公開する際にも使用できます。

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2025/02/25 11:49

編集2025/02/25 22:35

実現したいこと

https://qiita.com/ukei2021/items/49eb61e4db221346dfe0
Dockerのアウトプットのために上記リンクと同じ内容で構築したいと思ってます。

発生している問題・分からないこと

docker-compose up -d --buildするとfrontendだけ立ち上がらず、後述のエラーになってしまいます。
環境はWSLのUbuntuで行っていますが、別端末では正常に動作しております。
※エラーメッセージはdocker logs frontend-containerの結果になります。

エラーメッセージ

error

1npm error code ENOENT 2npm error syscall open 3npm error path /var/www/html/package.json 4npm error errno -2 5npm error enoent Could not read package.json: Error: ENOENT: no such file or directory, open '/var/www/html/package.json' 6npm error enoent This is related to npm not being able to find a file. 7npm error enoent 8npm error A complete log of this run can be found in: /root/.npm/_logs/2025-02-25T09_17_02_785Z-debug-0.log

該当のソースコード

rootdir/docker/dockercomposeyml

1version: '3.9' 2 3services: 4 backend: 5 build: 6 context: ./backend 7 container_name: backend-container 8 volumes: 9 - ../src:/var/www/html 10 ports: 11 - "80:80" 12 depends_on: 13 - db 14 15 frontend: 16 build: 17 context: ./frontend 18 container_name: frontend-container 19 working_dir: /var/www/html 20 ports: 21 - "5173:5173" 22 volumes: 23 - ../src:/var/www/html 24 - /var/www/html/node_modules # node_modules を除外 25 26 db: 27 image: mysql:latest 28 container_name: db-container 29 ports: 30 - "3306:3306" 31 environment: 32 MYSQL_ROOT_PASSWORD: root 33 MYSQL_DATABASE: laravel 34 MYSQL_USER: laravel 35 MYSQL_PASSWORD: laravel 36 volumes: 37 - db_data:/var/lib/mysql 38 - ./mysql/my.cnf:/etc/mysql/my.cnf 39 40volumes: 41 db_data: 42

rootdir/docker/frontend/Dockerfile

1FROM node:22 2 3WORKDIR /var/www/html 4 5RUN apt-get update && apt-get install -y \ 6 git \ 7 && apt-get clean 8 9COPY package*.json . 10 11CMD ["sh", "-c", "npm install && npm run dev"] 12

rootdir/src/package.json

1{ 2 "name": "docker-test", 3 "version": "1.0.0", 4 "scripts": { 5 "start": "node server.js", 6 "dev": "node server.js" 7 } 8} 9

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

1.CMD ["npm", "install"]してみる
⇒エラー変わらず
2.COPYを色々変更して追加してみる
COPY package*.json .
COPY ./package*.json .
COPY ../../package*.json .
⇒エラー変わらず
3.docker-compose.ymlのcontext: ./docker/node -> context: .に変更
⇒backend含め起動しない
4.working_dirを/var/www/html/frontendに変更
⇒エラー変わらず
5.docker-compose down --volumesまたはdocker-compose down --volumes --rmi allして再ビルド
⇒エラー変わらず

補足

WSL(ubuntu24.04 LTS)
Dockerバージョン:28.0.0(Community)
Docker Composeバージョン:v2.33.0

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bsdfan

2025/02/25 22:15

/var/www/html は ../src をボリュームマウントしているので、../src/package.json がないのではないでしょうか。Dockerfile の COPY 云々は今のエラーとはあまり関係ないと思われます。 docker compose exec frontend sh とかで、コンテナに入ってみて、/var/www/html がどうなっているか確認してみてはどうでしょう。
matsu_918

2025/02/25 22:34

ホスト側のsrc配下にpackage.jsonがあります。 docker-compose run --rm frontend shして後にls -l /var/www/htmlして確認するとfrontendフォルダやpackage-lock.jsonはありますが、確かにpackage.jsonは存在しません。 マウントは問題ないのかなと思っています。
bsdfan

2025/02/26 09:08

/var/www/html に frontend ディレクトリが存在するのは想定通りですか? なんとなく想定外のディレクトリをマウントしているように見えます。(実は違う内容の docker-compose.yml を使っている、とか)。 docker inspect でコンテナの情報を確認すると、実際のどこにどこのディレクトリをマウントしているか確認できると思います。
matsu_918

2025/02/27 06:24

ありがとうございます。 再度確認しましたが、やはりマウントやディレクトリの配置、存在は問題ありませんでした。 Windowsにマウントせず直接wslのubuntu内にソースを配置して解決しました。
guest

回答1

0

自己解決

Windowsにマウントせず直接wslのubuntu内にソースを配置して解決しました。

投稿2025/02/27 06:24

編集2025/02/27 06:25
matsu_918

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.32%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問