代码之家  ›  专栏  ›  技术社区  ›  Devin Dixon

Docker不复制文件

  •  0
  • Devin Dixon  · 技术社区  · 7 年前

    我目前正在使用FE上的ReactJS、后端的Express和docker构建一个应用程序。我遇到一个问题,在docker中找不到我的节点服务器的my package.json。错误消息如下所示:

    server_1    | [0] 
    server_1    | [0] > stocklookback@1.0.0 server /code/app/server
    server_1    | [0] > nodemon index.js
    server_1    | [0] 
    server_1    | [1] npm ERR! path /code/app/client/package.json
    server_1    | [1] npm ERR! code ENOENT
    server_1    | [1] npm ERR! errno -2
    server_1    | [1] npm ERR! syscall open
    server_1    | [1] npm ERR! enoent ENOENT: no such file or directory, open '/code/app/client/package.json'
    server_1    | [1] npm ERR! enoent This is related to npm not being able to find a file.
    server_1    | [1] npm ERR! enoent 
    server_1    | [1] 
    server_1    | [1] npm ERR! A complete log of this run can be found in:
    server_1    | [1] npm ERR!     /root/.npm/_logs/2019-08-04T20_53_24_266Z-debug.log
    server_1    | [1] npm ERR! code ELIFECYCLE
    server_1    | [1] npm ERR! errno 254
    server_1    | [1] npm ERR! stocklookback@1.0.0 client: `npm start --prefix ../client`
    server_1    | npm ERR! Exit status 254
    server_1    | [1] npm ERR! 
    server_1    | [1] npm ERR! Failed at the stocklookback@1.0.0 client script.
    server_1    | [1] npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    server_1    | [1] 
    stocklookback_client_1 exited with code 1
    

    现在,我的docker-compose.yml文件如下所示:

    version: '3.3'
    
    volumes:
      postgres_database :
         external: false
    
    services:
     server:
       build: ./server
       expose:
         - ${APP_SERVER_PORT}
       environment:
         API_HOST: ${API_HOST}
         APP_SERVER_PORT: ${APP_SERVER_PORT}
       ports:
         - ${APP_SERVER_PORT}:${APP_SERVER_PORT}
       volumes:
         - ./server:/code/app/server/src
       command: npm run dev
    

    FROM node:12.2.0-alpine
    
    RUN mkdir -p /code/app/server/
    WORKDIR /code/app/server/
    
    COPY package.json /code/app/server/
    COPY package-lock.json /code/app/server/
    
    RUN npm install
    
    COPY . /code/app/server/
    
    CMD [ "npm", "start", "dev" ]
    

    enter image description here

    你知道我为什么会犯这个错误吗?

    0 回复  |  直到 7 年前
        1
  •  0
  •   Ramaraja    7 年前

    如果您仔细查看日志,那么并不是您的服务器给了您问题的答案 package.json 没有找到, 实际上是你的客户 .

    惊讶

    server_1    | [1] npm ERR! path /code/app/client/package.json
    

    看,路径是 /code/app/client/package.json .

    server_1    | [1] npm ERR! enoent ENOENT: no such file or directory, open '/code/app/client/package.json'
    

    此意外事件的发生是因为您正在执行npm脚本 npm start --prefix ../client 正如所证明的那样,

    server_1    | [1] npm ERR! stocklookback@1.0.0 client: `npm start --prefix ../client`
    

    npm开始--前缀../client package.json ../client npm start package.json

    现在,您的问题可能是如何运行该脚本?

    在Docker compose文件中,您正在执行命令 npm run dev 记住,这将覆盖 npm start dev 在您的Dockerfile中提供。 在服务器的 . 是不是在说那个剧本, npm开始--前缀../client

    npm运行开发