docker-compose用于服务量的错误路径

时间:2019-07-20 09:55:19

标签: docker docker-compose

我正在使用lerna来管理我的monorepo,并且我正在慢慢添加docker来带来所有好处。

我遇到的问题是,在运行docker-compose up api时,图像可以正常构建,但是在volume中声明的docker-compose显示出奇怪的行为。

文件夹结构

docker-compose.yml
package.json
packages
  - web
  - api
    - src
    - dist
    - package.json

docker-compose.yml

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

Dockerfile(程序包/ api / Dockerfile)

# 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时,它可以正常工作,但由于我们将所有其他软件包安装在容器中而似乎不是最佳选择。

0 个答案:

没有答案