Dockerizing несколько приложений Node с Lerna в моно хранилище - PullRequest
0 голосов
/ 11 февраля 2020

У меня возникли некоторые проблемы с моим монохранилищем и 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

Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...