У меня возникли некоторые проблемы с моим монохранилищем и Docker настройкой проекта.
Я хочу использовать Lerna для моей настройки монохранилища и Docker для сборки проекта.
До того, как я интегрировал Lerna, все работало просто отлично, но теперь у меня есть интегрированная Lerna, и я понятия не имею, в какую часть / шаг я должен позвонить lerna bootstrap
, потому что после вызова этой команды мой node_modules
будет построен автоматически, и мне больше не нужно отдельно запускать npm install
в каждом Dockerfile
. Чего я не понимаю, так это как все это будет выглядеть, и придется ли мне создавать еще одну папку Dockerfile
для root? если да, то как будет выглядеть мой файл docker-compose.yml
? Все неясно.
Вот так выглядит дерево моего проекта:
Внутренняя папка имеет настройку basi c nest js, а папка клиента имеет настройку basi c Gatsby .
.
├── backend
│ ├── Dockerfile
│ ├── nest-cli.json
│ ├── package.json
│ ├── README.md
│ ├── src
│ │ ├── app.controller.spec.ts
│ │ ├── app.controller.ts
│ │ ├── app.module.ts
│ │ ├── app.service.ts
│ │ └── main.ts
│ ├── test
│ │ ├── app.e2e-spec.ts
│ │ └── jest-e2e.json
│ ├── tsconfig.build.json
│ └── tsconfig.json
├── client
│ ├── Dockerfile
│ ├── gatsby-browser.js
│ ├── gatsby-config.js
│ ├── gatsby-node.js
│ ├── gatsby-ssr.js
│ ├── LICENSE
│ ├── package.json
│ ├── README.md
│ └── src
│ ├── components
│ │ ├── header.js
│ │ ├── image.js
│ │ ├── layout.css
│ │ ├── layout.js
│ │ └── seo.js
│ ├── images
│ │ ├── gatsby-astronaut.png
│ │ └── gatsby-icon.png
│ └── pages
│ ├── 404.js
│ ├── index.js
│ └── page-2.js
├── docker-compose.yml
├── lerna.json
├── package.json
├── README.md
└── tslint.json
Dockerfile в папке клиента:
FROM node:12
EXPOSE 8000 9929 9230
WORKDIR /usr/src/app/client
RUN npm install -g gatsby-cli
COPY package*.json ./
COPY . .
RUN npm install
CMD ["gatsby", "develop", "-H", "0.0.0.0" ]
Dockerfile в папке бэкэнда:
FROM node:12-alpine
WORKDIR /usr/src/app/backend
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "start" ]
docker -compose.yml в файле root папка:
version: "3"
services:
backend:
image: docker-nestjs-backend
build: ./backend
command: npm run start:dev
volumes:
- ./backend:/usr/src/app/backend
- /usr/src/app/backend/node_modules
ports:
- 3002:3000
client:
image: docker-gatsby-client
build: ./client
volumes:
- ./client:/usr/src/app/client
- /usr/src/app/client/node_modules
ports:
- "8000:8000"
- "9929:9929"
- "9230:9230"
environment:
- NODE_ENV=development
- GATSBY_WEBPACK_PUBLICPATH=/
depends_on:
- backend
Любая помощь приветствуется.