如何解决npm install 找不到 package.json
我正在尝试 dockerize 我的 django+react 应用程序。
问题是,在我的容器中为 frontend
创建目录并尝试 RUN npm install
后,npm 找不到 package.json
。在 RUN npm install
之前,我切换到 WORKDIR /app/app-name/front
,我将这个文件复制到其中。对我来说奇怪的是错误显示:
app | npm ERR! code ENOENT
app | npm ERR! syscall open
app | npm ERR! path /app/label_it/package.json <-------------------------
app | npm ERR! errno -2
app | npm ERR! enoent ENOENT: no such file or directory,open '/app/label_it/package.json'
app | npm ERR! enoent This is related to npm not being able to find a file.
app | npm ERR! enoent
在这个错误行中,npm指出/app/label_it/
目录下没有package.json,这很明显。为什么我设置了 WORKDIR /app/label_it/front
并且 npm 在 /app/label_it
中运行???
我使用 docker-compose
构建此映像并运行容器。在我的 docker-compose.yaml
中,我设置了一个 workdir: /app/label_it
。可能是这样,但为什么呢?
似乎这个组合变量 workdir
覆盖了 WORKDIR
中的每个 Dockerfile
命令。
是这样吗,还是我遗漏了什么?
编辑:
我刚刚尝试从撰写文件 workdir: /app/label_it/
中删除,并且效果很好。还是没看懂。
Dockerifle:
FROM python:3
RUN apt-get update -yq \
&& apt-get install curl gnupg -yq \
&& curl -sL https://deb.nodesource.com/setup_14.x | bash \
&& apt-get install nodejs -yq
ENV PYTHONUNBUFFERED=1
RUN mkdir -p /app/label_it
WORKDIR /app/label_it
COPY requirements.txt /app/label_it
RUN pip install -r requirements.txt
WORKDIR /app/label_it/front
COPY label_it/front/package.json .
RUN npm install -g npm-install-peers
RUN npm install
COPY label_it/ /app/label_it/
COPY scripts/ /app/scripts/
RUN chmod +x /app/scripts/*
# change USER for security
WORKDIR /app/label_it
CMD ["production-script.sh"]
docker-compose:
version: "3.8"
services:
db:
image: postgres
container_name: postgres
environment:
- POSTGRES_DB=postgres
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
volumes:
- ./private/posgtesql/data/data:/var/lib/postgresql/data
app:
build: .
container_name: app
environment:
- DJANGO_DEBUG=True
- PATH=/app/scripts:${PATH}
volumes:
- .:/app
ports:
- "8080:8080"
depends_on:
- db
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。