gpt4 book ai didi

docker - 为什么不通过仅在 docker-compose 中绑定(bind)卷来安装模块

转载 作者:行者123 更新时间:2023-12-02 21:31:31 24 4
gpt4 key购买 nike

当我尝试 docker-compose builddocker-compose up -d我受了api-server容器没有启动。
我试过docker logs api-server

yarn run v1.22.5
$ nest start --watch
/bin/sh: nest: not found
error Command failed with exit code 127.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
看来 nest未安装软件包。因为 package.json未从主机复制到容器。
但在我看来,由 volumedocker-compose.yml 绑定(bind), 因此命令 yarn install应引用 - ./api:/src .
为什么我们需要 COPY文件到容器?
为什么只有 volume绑定(bind)效果不好?
如果有人有意见,请告诉我。
谢谢
以下是 dockerfile
FROM node:alpine

WORKDIR /src

RUN rm -rf /src/node_modules
RUN rm -rf /src/package-lock.json
RUN apk --no-cache add curl



RUN yarn install

CMD yarn start:dev
以下是 docker-compose.yml
version: '3'

services:
api-server:
build: ./api
links:
- 'db'
ports:
- '3000:3000'
volumes:
- ./api:/src
- ./src/node_modules
tty: true
container_name: api-server

最佳答案

卷是在运行时而不是在构建时安装的,因此在您的情况下,您应该复制 package.json在安装依赖项之前,并运行任何需要这些依赖项的命令。
一些引用资料:

  • Docker build using volumes at build time
  • Can You Mount a Volume While Building Your Docker Image to Cache Dependencies?
  • 关于docker - 为什么不通过仅在 docker-compose 中绑定(bind)卷来安装模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64315303/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com