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

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

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

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

npm

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

docker-compose

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

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Docker

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

Q&A

解決済

1回答

2042閲覧

docker-composeでのsymlinkエラー

God_Of_Lard

総合スコア9

Windows 10

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

npm

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

docker-compose

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

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Docker

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

0グッド

0クリップ

投稿2018/08/09 08:18

docker-compose up を実行すると、

npm ERR! path ../esprima/bin/esvalidate.js npm ERR! code EPROTO npm ERR! errno -71 npm ERR! syscall symlink npm ERR! EPROTO: protocol error, symlink

というエラーがでてしまいます。

調べると、

「Windows環境ではシンボリックリンクに対応していない」
「--no-bin-links とオプションを付ける」

というのが沢山見られます。
しかし、実際に実行してみると、

$ docker-compose up --no-bin-links Builds, (re)creates, starts, and attaches to containers for a service. Unless they are already running, this command also starts any linked services. The `docker-compose up` command aggregates the output of each container. When the command exits, all containers are stopped. Running `docker-compose up -d` starts the containers in the background and leaves them running. If there are existing containers for a service, and the service's configuration or image was changed after the container's creation, `docker-compose up` picks up the changes by stopping and recreating the containers (preserving mounted volumes). To prevent Compose from picking up changes, use the `--no-recreate` flag. If you want to force Compose to stop and recreate all containers, use the `--force-recreate` flag. Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...] Options: -d, --detach Detached mode: Run containers in the background, print new container names. Incompatible with --abort-on-container-exit. --no-color Produce monochrome output. --quiet-pull Pull without printing progress information --no-deps Don't start linked services. --force-recreate Recreate containers even if their configuration and image haven't changed. --always-recreate-deps Recreate dependent containers. Incompatible with --no-recreate. --no-recreate If containers already exist, don't recreate them. Incompatible with --force-recreate and -V. --no-build Don't build an image, even if it's missing. --no-start Don't start the services after creating them. --build Build images before starting containers. --abort-on-container-exit Stops all containers if any container was stopped. Incompatible with -d. -t, --timeout TIMEOUT Use this timeout in seconds for container shutdown when attached or when containers are already running. (default: 10) -V, --renew-anon-volumes Recreate anonymous volumes instead of retrieving data from the previous containers. --remove-orphans Remove containers for services not defined in the Compose file. --exit-code-from SERVICE Return the exit code of the selected service container. Implies --abort-on-container-exit. --scale SERVICE=NUM Scale SERVICE to NUM instances. Overrides the `scale` setting in the Compose file if present.

upについての説明でしょうか。が表示されるだけです。

私が見た記述はnpm install でのエラーばかりだったので、
docker-composeでの使用は間違っているのかもしれません。

「管理者として実行すればうまくいく」
という記述も見つけ試してみましたが、

Starting "default"... (default) Check network to re-create if needed... (default) Windows might ask for the permission to configure a dhcp server. Sometimes, such confirmation window is minimized in the taskbar. Error setting up host only network on machine start: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe modifyvm default --nic2 hostonly --nictype2 82540EM --nicpromisc2 deny --hostonlyadapter2 VirtualBox Host-Only Ethernet Adapter #2 --cableconnected2 on failed: VBoxManage.exe: error: Code E_FAIL (0x80004005) - Unspecified error (extended info not available) VBoxManage.exe: error: Context: "LockMachine(a->session, LockType_Write)" at line 525 of file VBoxManageModifyVM.cpp Looks like something went wrong in step ´Checking status on default´... Press any key to continue...

今度はバーチャルボックスでエラーが出てしまうようです。
どなたか解決方法をご存知の方がいらっしゃいましたらお願い致します。

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

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

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

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

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

manzyun

2018/08/09 08:28

可能であれば、立ち上げようとしているdocker-compose.ymlの概要か、そのコードを掲載していただけますでしょうか?
guest

回答1

0

ベストアンサー

とりあえずパッと見た限りでの意見ですが、

docker-compose up 時にnpmのログが出るということは、おそらくコンテナ内の話だと思いますので、

「Windows環境ではシンボリックリンクに対応していない」

「--no-bin-links とオプションを付ける」

は関係ないと思います。

とはいえ、Docker内でNPM周りでエラーが出ているのは事実なので、もしdocker-compose.ymlで呼び出してるDockerfileや、Dockerfileで呼び出しているスクリプトで、npmでのパッケージのインストールを行っている行に
--no-bin-links を追記するのが良いと思います。

「いや、Docker Store(Docker Hub)から引っ張ってきたイメージだから知らないわい」
ということであれば、イメージ提供している方に問い合わせたり、イメージ提供元の運営しているWebページを調べたりしましょう。

投稿2018/08/09 08:46

manzyun

総合スコア2244

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

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

God_Of_Lard

2018/08/10 07:28

こんにちは。 ご回答ありがとうございます。 私の勘違いで、 これまでずっとdocker-compose up --no-bin-linksと記述していたのですが ymlの中のnpmコマンドに --no-bin-linksを付けたらエラーが消えました。 npmのオプションだったのですね・・・ お手数おかけしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問