如何在Docker中更改package.json的文件路径?

时间:2019-05-21 18:04:58

标签: node.js postgresql docker express

我正在个人项目上设置docker,但是遇到了路径错误。

这是我的Dockerfile:

FROM node:latest

WORKDIR /Users/Alex/funky-ducks/mediumrare/mediumrare

COPY ./ ./ 

RUN  npm install

CMD ["/bin/bash"]

我的docker-compose.yml文件:

version: '3.7'

services:
   mediumrare_docker:
      container_name: container001
      build: /Users/Alex/funky-ducks/mediumrare/mediumrare
      command: npm start
      ports:
         - "3000:3000"

这是我的目录文件结构(在docker-compose.yml下面注意“ mediumrare”是前端/ mediumrare_server是后端):

.
└── mediumrare
    ├── Dockerfile
    ├── README.md
    ├── docker-compose.yml
    ├── mediumrare
    │   ├── README.md
    │   ├── node_modules
    │   ├── package-lock.json
    │   ├── package.json
    │   ├── public
    │   ├── src
    │   └── yarn.lock
    ├── mediumrare_server
    │   ├── node_modules
    │   ├── package-lock.json
    │   ├── package.json
    │   └── server.js
    ├── package-lock.json
    └── package.json

我尝试在顶层目录中创建package.json文件,并提交package-lock.json文件。

当我运行docker-compose up时,收到的错误消息如下:

Creating container001 ... done
Attaching to container001
container001         | npm ERR! path /Users/Alex/funky-ducks/mediumrare/mediumrare/mediumrare_server/package.json
container001         | npm ERR! code ENOENT
container001         | npm ERR! errno -2
container001         | npm ERR! syscall open
container001         | npm ERR! enoent ENOENT: no such file or directory, open '/Users/Alex/funky-ducks/mediumrare/mediumrare/mediumrare_server/package.json'
container001         | npm ERR! enoent This is related to npm not being able to find a file.
container001         | npm ERR! enoent 
container001         | 
container001         | npm ERR! A complete log of this run can be found in:
container001         | npm ERR!     /root/.npm/_logs/2019-05-21T17_39_18_298Z-debug.log
container001 exited with code 254

我看到在构建它时,它正在“ mediumrare_server”目录中寻找package.json文件。但是package.json文件是顶部的“ mediumrare”目录。为什么找不到该文件,如何解决此错误?谢谢!

1 个答案:

答案 0 :(得分:0)

我在本地尝试了类似的代码,并且有效。您的图片可能已过时。通过运行docker-compose up --build

对其进行重建

关于Dockerfile的一些注意事项

  1. 首先运行COPY package.jsonpackage-lock.json,然后依次运行npm installCOPY源文件。这将使您能够利用分层缓存。
  2. 您是否有任何理由在容器中拥有与主机相同的目录结构?
  3. 您可以在您的docker-compose.yml中使用build .而不是完整路径