简体   繁体   中英

EEXIST: file already exists for installing npm package globally in Dockerfile

I am trying to learn docker by creating a simple nodejs image:

# Dockerfile
FROM node:10
RUN npm install -g yarn
EXPOSE 8080
WORKDIR /usr/src/app

When I run docker build -t "node10". , it get the following errors:

 > [2/3] RUN npm install -g yarn:
#5 2.007
#5 2.007 > yarn@1.22.10 preinstall /usr/local/lib/node_modules/yarn
#5 2.007 > :; (node ./preinstall.js > /dev/null 2>&1 || true)
#5 2.007
#5 2.565 npm ERR! code EEXIST
#5 2.573 npm ERR! syscall symlink

#5 2.581 npm ERR! path ../lib/node_modules/yarn/bin/yarn.js
#5 2.581 npm ERR! dest /usr/local/bin/yarn
#5 2.582 npm ERR! errno -17
#5 2.589 npm ERR! EEXIST: file already exists, symlink '../lib/node_module
s/yarn/bin/yarn.js' -> '/usr/local/bin/yarn'
#5 2.589 npm ERR! File exists: /usr/local/bin/yarn
#5 2.590 npm ERR! Remove the existing file and try again, or run npm
#5 2.591 npm ERR! with --force to overwrite files recklessly.
#5 2.598
#5 2.599 npm ERR! A complete log of this run can be found in:
#5 2.599 npm ERR!     /root/.npm/_logs/2021-03-25T05_08_51_089Z-debug.log

How can I fix this error?

FROM node:10
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "npm", "run", "start" ]

The standard Docker Hub node image already contains Yarn; you don't need to separately install it.

~% docker run --rm node:10 yarn --version
1.13.0

Just COPY your package.json and yarn.lock in and RUN yarn install . Delete the RUN npm install -g yarn line, it's unnecessary and your error is a conflict with the preinstalled Yarn.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM