我建立了一个包含 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:
我想我只需要添加文件夹,但我不知道如何添加。
谢谢您的帮助
为了让您的应用程序获取共享模块,您需要将它们包含在应用程序的卷部分中,如下所示:
my-api:
build: .
image: my-api
restart: always
ports:
- 3001:3001
volumes:
- .:/app
- ./yourSharedFolderPath
depends_on:
- mongo
networks:
- api-net
environment:
- TZ=Europe/Paris