简体   繁体   English

复制文件时没有这样的文件或目录

[英]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.我想在同一图像中安装PythonNode.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*.jsonpackage-*.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.

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