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

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

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

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

Docker

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

Q&A

解決済

1回答

1734閲覧

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

teilmari

総合スコア14

Windows 10

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

Docker

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

0グッド

0クリップ

投稿2019/08/10 19:48

編集2019/08/10 20:01

お世話になります。
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のtest1ディレクトリが作成され、
ホスト側(Windows10)のブラウザのlocalhostからも問題なくReact Appが表示されます。

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

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ディレクトリを作成したいのですが・・・以下のエラーが表示され叶いません。

#Dockerfileよりコンテナを作成 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 #コンテナが作成されその中に自動で入る #create-react-app test1 と打ち、test1というReactディレクトリをnpmより作成 /usr/app/docker-common # create-react-app test1 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も最新版にアップデートをしても同じでした。

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

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

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

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

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

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

gentaro

2019/08/10 21:30

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

2019/08/11 01:06

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

2019/08/11 03:21

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

回答1

0

自己解決

皆様ありがとうございます。
返信が遅れてしまい申し訳ありません。
logを見ても@の有無についてやってみても解決には至りませんでした;
結局Proにアップグレードしてdocker for windowsにしました。
ありがとうございました!

投稿2020/01/19 14:34

teilmari

総合スコア14

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問