共享文件夹和 Docker 的 Monorepo 问题

问题描述 投票:0回答:1

我建立了一个包含 3 个包的 monorepo 项目

./项目1

./项目2

./项目3

./共享

每个项目都有自己的 dockerfile 和 docker compose 文件

我使用 npm 链接来使用共享文件夹并将其添加到每个 package.json 中:

depedencies:{ "@my-shared/types": "file:../shared" }

然后我可以像这样导入:

import { stuff } from '@my-shared/types';

例如,如果我在我的project1(这是一个节点api)中运行命令“npm run dev”,一切都工作正常!除非...我正在使用docker。如果我在 ./project1 文件夹中运行命令“docker compose up”,则会收到错误,因为它找不到我的共享文件夹。

这是我的 dockerfile :

FROM node:lts-slim

ENV TZ=Europe/Paris

ADD . /app/
WORKDIR /app

RUN npm install

EXPOSE 3001

CMD npm run dev

这是我的 docker-compose :

services:
  mongo:
    image: mongo
    container_name: mongodb
    restart: always
    volumes: 
      - dbdata:/data/db
    networks:
      - api-net
    command: mongod --quiet --logpath /dev/null 
    environment:
      - TZ=Europe/Paris
  
  my-api:
    build: .
    image: my-api 
    restart: always 
    ports:
      - 3001:3001
    volumes: 
      - .:/app  
    depends_on:
      - mongo
    networks:
      - api-net
    environment:
      - TZ=Europe/Paris

networks:
  api-net:
    driver: bridge

volumes:
  dbdata:

我想我只需要添加文件夹,但我不知道如何添加。

谢谢您的帮助

typescript docker docker-compose monorepo
1个回答
0
投票

为了让您的应用程序获取共享模块,您需要将它们包含在应用程序的卷部分中,如下所示:

my-api:
    build: .
    image: my-api 
    restart: always 
    ports:
      - 3001:3001
    volumes: 
      - .:/app  
      - ./yourSharedFolderPath 
    depends_on:
      - mongo
    networks:
      - api-net
    environment:
      - TZ=Europe/Paris
© www.soinside.com 2019 - 2024. All rights reserved.