我正在使用lerna
来管理我的monorepo,并且我正在慢慢添加docker
来带来所有好处。
我遇到的问题是,在运行docker-compose up api
时,图像可以正常构建,但是在volume
中声明的docker-compose
显示出奇怪的行为。
docker-compose.yml
package.json
packages
- web
- api
- src
- dist
- package.json
version: "3"
services:
api:
container_name: "the-api"
restart: always
build:
context: .
dockerfile: ./packages/api/Dockerfile
ports:
- 7000:7000
volumes:
- ./packages/api:/usr/src/app:cached
# CONTEXT OF THIS DOCKERFILE IS THE ROOT OF THE REPO
FROM node:10
# Environment variables
ENV NODE_ENV development
# Working directory
WORKDIR /usr/src/app
######### LERNA #########
COPY package.json .
COPY lerna.json .
COPY .npmrc .
COPY config-aliases.js .
######### LERNA #########
# Install deps
RUN npm install --loglevel notice --unsafe-perm
# Start
CMD [ "npm", "run", "server:dev", "--prefix", "packages/api" ]
应将./packages/api
安装到容器内的工作目录中,以使开发顺利进行。
使用docker-compose up api
命令时,它将在packages/api
内创建一个新文件夹。因此,在启动时会创建packages/api/packages/api
。然后尝试在api的容器内运行npm
命令时,会出现npm无法找到任何package.json
的错误。
奇怪的是,当我将./:/usr/src/app:cached
中的卷更改为docker-compose
时,它可以正常工作,但由于我们将所有其他软件包安装在容器中而似乎不是最佳选择。