当我尝试docker-compose build
和docker-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
软件包。因为CCD_ 6未从主机复制到容器。
但在我看来,由volume
绑定到docker-compose.yml
,因此命令yarn install
应该引用- ./api:/src
。
为什么我们需要COPY
文件到容器?
为什么只有volume
绑定不能正常工作?
如果有人有意见,请告诉我。
感谢
以下是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在构建时使用卷进行构建
- 您可以在构建Docker映像以缓存依赖关系的同时装载卷吗