FROM node:16-buster-slim RUN apt-get update WORKDIR /app COPY package.json /home RUN npm install --prefix /home { "name": "test", "version": "0.1.0", "private": false, "scripts": { "dev": "vue-cli-service serve --mode development --host 0.0.0.0", "serve": "vue-cli-service serve --mode production --host 0.0.0.0", "build": "vue-cli-service build", "jest": "vue-cli-service test:unit --watchAll", "lint": "vue-cli-service lint" }, "dependencies": { "axios": "^0.21.4", "core-js": "^3.6.5", "dateformat": "^5.0.2", "element-plus": "^1.1.0-beta.9", "element-ui": "^2.15.6", "lib-flexible": "^0.3.2", "ol": "^6.6.1", "spark-md5": "^3.0.2", "vue": "^3.0.0", "vue-router": "^4.0.0-0", "vuelayers": "^0.11.36", "vuex": "^4.0.0-0" }, "devDependencies": { "@vue/cli-plugin-babel": "~4.5.0", "@vue/cli-plugin-eslint": "~4.5.0", "@vue/cli-plugin-router": "~4.5.0", "@vue/cli-plugin-unit-jest": "~4.5.0", "@vue/cli-plugin-vuex": "~4.5.0", "@vue/cli-service": "~4.5.0", "@vue/compiler-sfc": "^3.0.0", "@vue/eslint-config-standard": "^5.1.2", "@vue/test-utils": "^2.0.0-0", "babel-eslint": "^10.1.0", "babel-plugin-component": "^1.1.1", "eslint": "^6.7.2", "eslint-plugin-import": "^2.20.2", "eslint-plugin-node": "^11.1.0", "eslint-plugin-promise": "^4.2.1", "eslint-plugin-standard": "^4.0.0", "eslint-plugin-vue": "^7.0.0", "fs-extra": "^10.0.0", "lint-staged": "^9.5.0", "mockjs": "^1.1.0", "node-sass": "^4.14.1", "px2rem-loader": "^0.1.9", "sass-loader": "^8.0.2", "typescript": "~3.9.3", "vue-jest": "^5.0.0-0" }, "gitHooks": { "pre-commit": "lint-staged" }, "lint-staged": { "*.{js,jsx,vue}": [ "vue-cli-service lint", "git add" ] } }Paso: EJECUTAR npm install --prefix /home
---> Ejecutándose en fc08d7e933ed aviso npm
Aviso de npm ¡Nueva versión de parche de npm disponible! 8.1.0 -> 8.1.4
aviso de npm Registro de cambios: https://github.com/npm/cli/releases/tag/v8.1.4 aviso de npm ¡Ejecutenpm install -g npm@8.1.4para actualizar!
aviso de npm
npm ¡ERROR! codigo ERESOLVE
npm ¡ERROR! ERESOLVE no pudo resolver el árbol de dependencia
npm ¡ERROR!
npm ¡ERROR! Mientras se resuelve: artemis@0.1.0
npm ¡ERROR! Encontrado: vue@3.2.22
npm ¡ERROR! node_modules/vue
npm ¡ERROR! vue@"^3.0.0" del proyecto raíz
npm ¡ERROR!
npm ¡ERROR! No se pudo resolver la dependencia:
npm ¡ERROR! peer vue@"^2.5.17" de element-ui@2.15.6
npm ¡ERROR! node_modules/element-ui
npm ¡ERROR! element-ui@"^2.15.6" del proyecto raíz
npm ¡ERROR!
npm ¡ERROR! Solucione el conflicto de dependencia ascendente o vuelva a intentarlo
npm ¡ERROR! este comando con --force, o --legacy-peer-deps
npm ¡ERROR! para aceptar una resolución de dependencia incorrecta (y potencialmente rota).
npm ¡ERROR!
npm ¡ERROR! Consulte /root/.npm/eresolve-report.txt para obtener un informe completo.npm ERR! A complete log of this run can be found in:npm ¡ERROR! /root/.npm/_logs/2021-11-25T01_40_08_953Z-debug.log
pero este package.json funciona bien en node:lts-alpine
Parece que tiene problemas con peer dependencies , si simplemente configura su npm para usar la lógica de dependencia heredada para instalar sus paquetes, resolverá el problema.
Simplemente agregue a su Dockerfile esta configuración antes de ejecutar npm install:
... COPY package.json /home RUN npm config set legacy-peer-deps true RUN npm install --prefix /homePara comprender qué hace esta bandera, le sugiero que lea esta respuesta SO donde se explica ampliamente.