如何在Dockerfile中复制package.json?

yftpprvb  于 2023-06-29  发布在  Docker
关注(0)|答案(1)|浏览(150)

我在将我的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

感谢任何帮助!

zyfwsgd6

zyfwsgd61#

将docker-compose.yml移到项目的根目录下
删除上下文,因为它默认为当前文件夹,并更改Dockerfile路径(或者也移动Dockerfile,因为它不是应用源代码的一部分)

build:
  dockerfile: src/apps/api/Dockerfile

也更新env文件
然后从直接上下文复制。容器应该对自己的yarn锁文件IMO负责,所以不需要复制它。(我遇到过这样的问题,在修改包json之后,我忘记更新主机上的锁文件,所以当包含锁文件时,构建失败,版本冲突)

COPY package.json .

您还应该考虑为至少node_modules添加.dockerignore

相关问题