

[Vue.jsの開発環境をDockerで構築する手順 -
Qiita](https://qiita.com/kskinaba/items/44077529ff2abcd1fcd4)

上記の記事を参考にdockerを用いてVueの環境構築をしています。

[code]

    docker build --tag zatu:latest --file Dockerfile .
    
[/code]

でイメージを作成し、

[code]

    docker run --rm -it --name zatu1 -p 8080:8080 -v ${PWD}:/zatubako -v /zatubako/node_modules zatu:latest
    
[/code]

でコンテナを起動しようとしましたが、以下のエラーが出ました。

[code]

    npm ERR! code ENOENT
    npm ERR! syscall open
    npm ERR! path /zatubako/package.json
    npm ERR! errno -2
    npm ERR! enoent ENOENT: no such file or directory, open '/zatubako/package.json'
    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/2020-05-21T08_57_53_482Z-debug.log
    
[/code]

どうかご享受お願いします。

Dokcerfile

[code]

    FROM node:10.17.0-alpine3.9
    WORKDIR /zatubako
    COPY package*.json ./
    RUN npm install
    CMD ["npm", "run", "serve"]
    
[/code]

ディレクトリ構成

[code]

    .
    ├── zatubako
    │   ├── babel.config.js
    │   ├── dist 
    │   ├── node_modules
    │   │   └── ...
    │   ├── package.json
    │   ├── public
    │   │   ├── favicon.ico
    │   │   └── index.html
    │   ├── README.md
    │   ├── src
    ├── README.md
    └── dockerfile
    ├── .dockerignore
    └── docker-compose.yml
    
[/code]

Package.json

[code]

    {
      "name": "zatubako",
      "description": "A Vue.js project",
      "version": "1.0.0",
      "author": "",
      "license": "MIT",
      "private": true,
      "scripts": {
        "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
        "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
      },
      "dependencies": {
        "vue": "^2.5.11"
      },
      "browserslist": [
        "> 1%",
        "last 2 versions",
        "not ie <= 8"
      ],
      "devDependencies": {
        "babel-core": "^6.26.0",
        "babel-loader": "^7.1.2",
        "babel-preset-env": "^1.6.0",
        "babel-preset-stage-3": "^6.24.1",
        "cross-env": "^5.0.5",
        "css-loader": "^0.28.7",
        "file-loader": "^1.1.4",
        "vue-loader": "^13.0.5",
        "vue-template-compiler": "^2.4.4",
        "webpack": "^3.6.0",
        "webpack-dev-server": "^2.9.1"
      },
      {
      "scripts": {
        "serve": "node_modules/.bin/vue-cli-service serve"
      }
    }
    
    }
    
[/code]


CC BY-SA 4.0
2020-05-23T06:58:11.160
66909
2023-07-15T03:04:40.550
2020-05-24T03:34:46.620
7997
39431
question
docker
docker runでコンテナを起動しようとしたらnpm ERR！が出る


マウントしているディレクトリが間違っていそうです。

おそらくDockerfileのある場所で`docker
run`を実行しているでしょうから、そこからみてpackage.jsonの位置は`zatubako/package.json`に存在します。

つまり、実行コマンドは次のようになると考えられます。

[code]

    docker run --rm -it --name zatu1 -p 8080:8080 -v ${PWD}/zatubako:/zatubako -v /zatubako/node_modules zatu:latest
    
[/code]

## 追記

package.jsonがJSONのsyntax errorを起こしています。正しくは以下の通りです。

[code]

    {
      "name": "zatubako",
      "description": "A Vue.js project",
      "version": "1.0.0",
      "author": "",
      "license": "MIT",
      "private": true,
      "scripts": {
        "dev": "cross-env NODE_ENV=development webpack-dev-server --open --hot",
        "build": "cross-env NODE_ENV=production webpack --progress --hide-modules"
      },
      "dependencies": {
        "vue": "^2.5.11"
      },
      "browserslist": [
        "> 1%",
        "last 2 versions",
        "not ie <= 8"
      ],
      "devDependencies": {
        "babel-core": "^6.26.0",
        "babel-loader": "^7.1.2",
        "babel-preset-env": "^1.6.0",
        "babel-preset-stage-3": "^6.24.1",
        "cross-env": "^5.0.5",
        "css-loader": "^0.28.7",
        "file-loader": "^1.1.4",
        "vue-loader": "^13.0.5",
        "vue-template-compiler": "^2.4.4",
        "webpack": "^3.6.0",
        "webpack-dev-server": "^2.9.1"
      },
      "scripts": {
        "serve": "node_modules/.bin/vue-cli-service serve"
      }
    }
    
[/code]


CC BY-SA 4.0
2020-05-23T07:25:02.043
66911
2021-02-14T10:27:31.727
2021-02-14T10:27:31.727
3060
7997
66909
answer