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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Docker

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

解決済

Dockerで、共通フォルダ(-v)を作る場合でのみ生じる問題に困っています。

teilmari
teilmari

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Docker

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

1回答

0評価

0クリップ

993閲覧

投稿2019/08/10 19:48

編集2022/01/12 10:58

お世話になります。
Windows 10 Home
Visual Studio Code (PowerShell)
Docker ToolBox (DockerToolbox-18.09.0)
を使用しております。

ReactをDockerで使用するのに、
ホスト(Windows10)とゲスト(alpine)間で、上手く共通フォルダとDockerが動作せず困っています・・・。

共通フォルダを作らない(-vを使用しない)場合ですと、Dockerは問題なく動作します。
具体的には、作成したコンテナのalpine内でcreate-react-app test1 を打ち、
Reactディレクトリが作成され、
ホスト側(Windows10)のブラウザのlocalhostからも問題なくReact Appが表示されます。

しかし、docker run 時に -v コマンドにより、
ホストとゲストで共通フォルダ(docker-common)を作成すると失敗してしまいます。
ゲスト内からのcreate-react-app test1 コマンドより、
ホストのWindows10のdocker-commonフォルダに
test1というフォルダが最初は作られるのですが、
create-react-appでのフォルダ作成中にエラーが起き、test1も削除されてしまいます。
詳細は以下になります。

Dockerfileに

FROM alpine ENV wkdir docker-common WORKDIR /usr/app/$wkdir RUN apk add nodejs RUN apk add npm RUN npm i -g create-react-app ENTRYPOINT sh

を記述し、

docker build -t react-01 .

よりreact-01というImageを作成し、

docker run -it --name my-app-1 -p 3000:3000 -v //d/programming/docker/docker-common:/usr/app/docker-common react-01

というrunコマンドでmy-app-01という名のコンテナを作成しました。
Dockerfileよりすでにnpmもcreate-react-appも作られているので、
create-react-app test1 と入力し、
test1という名のReactディレクトリを作成したいのですが・・・以下のエラーが表示され叶いません。

#dockerを作成 PS D:\programming\docker\dockerfiles> docker run -it --name my-app-1 -p 3000:3000 -v //d/programming/docker/docker-common:/usr/app/docker-common react-01 #dockerが作成されその中に入る /usr/app/docker-common # create-react-app test1 #create-react-app test1 と打ち、test1というReactディレクトリをnpmより作成 Creating a new React app in /usr/app/docker-common/test1. #ホスト(windows10)のdocker-commonフォルダ内にtest1フォルダを確認 Installing packages. This might take a couple of minutes. Installing react, react-dom, and react-scripts... #しかし、ここで突然エラーが・・・ npm ERR! path /usr/app/docker-common/test1/node_modules/@hapi/topo/node_modules/@hapi/hoek/package.json.769352676 npm ERR! code ENOENT npm ERR! errno -2 npm ERR! syscall open npm ERR! enoent ENOENT: no such file or directory, open '/usr/app/docker-common/test1/node_modules/@hapi/topo/node_modules/@hapi/hoek/package.json.769352676' npm ERR! enoent This is related to npm not being able to find a file. npm ERR! enoent npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2019-08-10T19_09_04_454Z-debug.log Aborting installation. npm install --save --save-exact --loglevel error react react-dom react-scripts has failed. #ホスト(Windows10)のdocker-common内に作られていたtest1フォルダが削除されてしまう Deleting generated file... node_modules Deleting generated file... package.json Deleting test1/ from /usr/app/docker-common Done. #失敗に終わる /usr/app/docker-common #

最初にも申し上げた様に、共通フォルダを作らない(-vを使用しない)場合ですと、
create-react-appにはこのエラーは起きずReact Appが作成されます。
create-react-appコマンドではなく、mkdirコマンドで適当なディレクトリを作る分には、
ちゃんと作成されホストのdocker-common内にもmkdirフォルダ(ディレクトリ)は表示されます。
npmもnode.jsも最新版にアップデートをしても同じでした。

長くなってしまい申し訳ありません。
心当たりのある方がもしいらしたら、どうぞ宜しくお願い致します。
ここまでお読みいただきありがとうございました。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

gentaro
gentaro

2019/08/10 21:30

エラーメッセージに出てる /root/.npm/_logs/2019-08-10T19_09_04_454Z-debug.log の中身は確認されたんですかね
mokemokechicken
mokemokechicken

2019/08/11 01:06

@hapi という名前が悪いんですかね...? 素朴な疑問なんですが、 windowsは @hapi のようなフォルダ名はOKなんでしょうか?
gentaro
gentaro

2019/08/11 03:21

少なくともDocker for Windowsでは動きました。 Docker Toolboxに固有の問題ならちょっと試せないのでわかりませんけど。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Docker

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