首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >制作一个码头形象,但得到一个npm错误!EXDEV

制作一个码头形象,但得到一个npm错误!EXDEV
EN

Stack Overflow用户
提问于 2020-11-21 15:51:27
回答 1查看 151关注 0票数 0

我正在为一个小型个人项目开发一个API,而今天,当我试图组合docker容器时,我遇到了这个问题。

错误码

代码语言:javascript
复制
npm ERR! code EXDEV
npm ERR! syscall rename
npm ERR! path /usr/src/app/node_modules/aproba
npm ERR! dest /usr/src/app/node_modules/.aproba-zsSvSz54
npm ERR! errno -18
npm ERR! EXDEV: cross-device link not permitted, rename '/usr/src/app/node_modules/aproba' -> '/usr/src/app/node_modules/.aproba-zsSvSz54'

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-11-21T15_33_05_552Z-debug.log
ERROR: Service 'api-backend' failed to build : The command '/bin/sh -c npm install' returned a non-zero code: 238

此前(21-11-2020年),一切都很顺利。但当我试图使用Bcrypt时,我开始发现错误。过了一段时间,我回过头来,突然间我犯了这个错误。我将链接我的对接-撰写和对接文件在下面。

文档:

代码语言:javascript
复制
FROM node

WORKDIR /usr/src/app

ENV DB_HOST=api-db \
    DB_PORT=${DB_PORT} \
    DB_DATABASE=${DB_DATABASE} \
    DB_USERNAME=${DB_USERNAME} \
    DB_PASSWORD=${DB_PASSWORD}

COPY package*.json ./

RUN npm install
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y postgresql-client  

COPY docker-entrypoint /usr/local/bin/
RUN sed -i -e 's/\r$//' /usr/local/bin/docker-entrypoint && chmod +x /usr/local/bin/docker-entrypoint
ENTRYPOINT [ "docker-entrypoint" ]

EXPOSE 8888

docker-compose:

代码语言:javascript
复制
version: "3.8"

services:

  api-backend:
    image: node
    build: .
    hostname: backend
    env_file:
      - .env
    ports:
      - 3000:3000
    volumes:
      - .:/usr/src/app
    restart: on-failure:3
    depends_on:
      - api-db

  api-db:
    image: postgres
    hostname: api-db
    environment:
      - POSTGRES_DB=${DB_DATABASE}
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
    ports:
      - 2345:5432
    volumes: 
      - ./migrations:/docker-entrypoint-initdb.d
    restart: on-failure:3

networks:
  default:
    external:
      name: ${NETWORK:-local}

docker-entrypoint

代码语言:javascript
复制
#!/bin/bash

# waits for a database to come up
wait_for_db() {
    local host="$1" port="$2" user="$3" password="$4" name="$5"

    local psql=(psql postgres -p "$port" -U "$user" --password="$password" "$5")

    echo "[db] not yet ready to accept connections"
    WAIT_FOR_PG_ISREADY="while ! pg_isready; do sleep 1; done;"
    docker-compose exec postgres bash -c "$WAIT_FOR_PG_ISREADY"
    echo "[db] ready to accept connections"

}

wait_for_db "$DB_HOST" "$DB_PORT" "$DB_USERNAME" "$DB_PASSWORD" "$DB_DATABASE" || exit 0

npm run dev #app.js

我试着使用FROM node:14.15运行,这似乎是可行的。所以可能与最新的节点图像有关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-04 16:26:38

使用像FROM node:14.15这样的特定节点图像,而不是使用膝状体FROM node可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64945033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档