Как настроить среду разработки Node.js с помощью Docker Compose - PullRequest
2 голосов
/ 04 мая 2019

Я хочу создать полную среду Node.js для разработки приложений любого типа (сценарий, API-интерфейс, веб-сайт и т. Д.), Также использующих различные службы (например, Mysql, Redis, MongoDB). Я хочу использовать Docker для создания переносимой среды с несколькими ОС.

Я создал Dockerfile для контейнера, в котором установлен Node.js:

FROM node:8-slim

WORKDIR /app

COPY . /app

RUN yarn install

EXPOSE 80

CMD [ "yarn", "start" ]

И docker-compose.yml файл, в котором добавляются сервисы, которые мне нужны:

version: "3"
services:
  app:
    build: ./
    volumes:
      - "./app:/app"
      - "/app/node_modules"
    ports:
      - "8080:80"
    networks:
      - webnet
  mysql:
    ...
  redis:
    ...
networks:
  webnet:

Я хотел бы спросить вас, каковы наилучшие модели для достижения этих целей:

  • Распределение всей рабочей директории по контейнеру хоста и докера для редактирования файлов и просмотра изменений с обеих сторон.

  • Наличие каталога node_modules, видимого как на хосте, так и на контейнере докера, чтобы его можно было отлаживать также из IDE на хосте.

  • Поскольку я хочу среду разработки, подходящую для каждого проекта, у меня будет контейнер, в который после его запуска я могу войти, используя команду, подобную docker-compose exec app bash. Поэтому я пытаюсь найти другой способ сохранить контейнер живым вместо запуска сервера Node.js или использования трюка CMD ['tail', '-f', '/d/null']

Спасибо за совет!

1 Ответ

2 голосов
/ 04 мая 2019

Распределение всей рабочей директории по контейнеру хоста и докера для редактирования файлов и просмотра изменений с обеих сторон.

  • используйте опцию -v volume для совместного использования тома хоста внутри док-контейнера

Наличие каталога node_modules, видимого как на хосте, так и на контейнере докера, чтобы его можно было отлаживать также из IDE на хосте.

  • так же, как и выше

Поскольку я хочу, чтобы среда разработки подходила для каждого проекта, у меня был бы контейнер, в который после запуска я мог бы войти, используя команду типа docker-compose exec app bash. Поэтому я пытаюсь найти другой способ сохранить контейнер живым вместо запуска сервера Node.js или использования трюка CMD ['tail', '-f', '/ d / null']

  • docker-compose.yml определяет их для интерактивного режима

    stdin_open: true tty: true

Затем запустите контейнер с помощью команды docker exec -it

...