我在将我的package.json
复制到Dockerfile上下文时遇到问题,下面是我的文件树:
src
- apps
-- api
--- Dockerfile
- docker
-- tcp
--- docker-compose.yml
- package.json
下面是我的Dockerfile:
FROM node:14.8.0-alpine as develop
WORKDIR /usr/src/app
COPY ../package.json .
COPY ../yarn.lock .
RUN yarn install
CMD npm run build api&& node dist/apps/api/main
和docker-compose.yml
version: '3'
services:
api:
container_name: api-gateway
build:
context: ../../apps/api
dockerfile: ../../apps/api/Dockerfile
restart: always
hostname: api
env_file:
- ../../.env
ports:
- "3000:3000"
networks:
- backend
有人能告诉我如何正确复制package.json文件来解决下面的错误吗?
=> ERROR [3/5] COPY ../package.json . 0.0s
=> ERROR [4/5] COPY ../yarn.lock . 0.0s
------
> [3/5] COPY ../package.json .:
------
------
> [4/5] COPY ../yarn.lock .:
------
failed to compute cache key: "/yarn.lock" not found: not found
感谢任何帮助!
1条答案
按热度按时间zyfwsgd61#
将docker-compose.yml移到项目的根目录下
删除上下文,因为它默认为当前文件夹,并更改Dockerfile路径(或者也移动Dockerfile,因为它不是应用源代码的一部分)
也更新env文件
然后从直接上下文复制。容器应该对自己的yarn锁文件IMO负责,所以不需要复制它。(我遇到过这样的问题,在修改包json之后,我忘记更新主机上的锁文件,所以当包含锁文件时,构建失败,版本冲突)
您还应该考虑为至少
node_modules
添加.dockerignore