[英]No such file or directory in copying a file
I have a problem.我有个问题。 I want to install
Python
and Node.js
in a same image.我想在同一图像中安装
Python
和Node.js
。 But there is a problem in copying the package.json.但是复制package.json有问题。 The error says
no such file or directory, open '/opt/app/src/package.json'
.错误说
no such file or directory, open '/opt/app/src/package.json'
。 So what is the probleme here?那么这里的问题是什么? What did I might wrong?
我可能做错了什么?
I looked at Docker-compose up: no such file or directory, open '/usr/src/app/package.json' , but I don't know where my error is.我看了看Docker-compose up: no such file or directory, open '/usr/src/app/package.json' ,但我不知道我的错误在哪里。
Dockerfile Dockerfile
FROM python:3.7-slim AS build
RUN mkdir -p /opt/app/src
COPY ./requirements.txt /opt/app/src
RUN pip install -r /opt/app/src/requirements.txt
FROM node:14-slim
RUN mkdir -p /opt/app/src
WORKDIR /opt/app/src
COPY --from=build package-*.json ./
RUN npm install
EXPOSE 4001
CMD npm start
Structure结构
|-- app.js
|-- requriments.txt
|-- test.js
|-- package.json
|-- routes
|-- |-- model.py
|-- |-- post_price.js
docker-compose.yml docker-compose.yml
version: '3.8'
services:
backend:
container_name: backend_airbnb
image: backend_airbnb
expose:
- "4001"
ports:
- "4001:4001"
networks:
- backendProxyNetwork
networks:
backendProxyNetwork:
external: true
Error错误
CONTAINERS
Attaching to backend_airbnb
backend_airbnb | npm ERR! code ENOENT
backend_airbnb | npm ERR! syscall open
backend_airbnb | npm ERR! path /opt/app/src/package.json
backend_airbnb | npm ERR! errno -2
backend_airbnb | npm ERR! enoent ENOENT: no such file or directory, open '/opt/app/src/package.json'
backend_airbnb | npm ERR! enoent This is related to npm not being able to find a file.
backend_airbnb | npm ERR! enoent
backend_airbnb |
backend_airbnb | npm ERR! A complete log of this run can be found in:
backend_airbnb | npm ERR! /root/.npm/_logs/2022-02-21T08_33_58_188Z-debug.log
backend_airbnb exited with code 254
You can probably install python in your nodejs image.您可以在 nodejs 映像中安装 python。 This is a very basic demostration of what you can do.
这是您可以做什么的非常基本的演示。
FROM node:14-alpine
WORKDIR /app
# Install Python
RUN apk add --no-cache python3 py3-pip
# Copy all required files
COPY . .
# Install your python packages
RUN pip install -r /app/requirements.txt
# Install node applications
RUN npm install
# Expose Port
EXPOSE 4001
# Start App
CMD npm start
It's probably because of the COPY
.这可能是因为
COPY
。 Try this: COPY --from=build package*.json./
.试试这个:
COPY --from=build package*.json./
。
Difference package*.json
vs package-*.json
差异
package*.json
与package-*.json
This will match "package.json" and "package-lock.json" - previously only the latter did and the package.json
didn't copy (which is required to install deps).这将匹配“package.json”和“package-lock.json”——以前只有后者匹配,而
package.json
没有复制(这是安装 deps 所必需的)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.