Запустить паруса в докер-контейнере - PullRequest
0 голосов
/ 05 февраля 2019

Я новичок в Docker и пытаюсь создать проект паруса, используя его.У меня есть следующие сомнения:

Я хочу установить паруса только в контейнере, я не хочу запускать npm install -g sails на моем хост-компьютере, это правильно, или я ошибаюсь?

Поскольку я хочу установить паруса только в контейнере, можно создать структуру проекта в контейнере с помощью команды sails new?

1 Ответ

0 голосов
/ 05 февраля 2019

Краткий ответ

Да, вы можете выполнить любую команду паруса, как если бы на вашем хост-компьютере были установлены паруса.После запуска контейнера вы можете использовать команду docker exec для выполнения любой команды внутри контейнера, например:

docker exec container-name sails new my-sails-project

Или вы можете подключиться к оболочке контейнера и выполнить команды напрямую:

docker exec -it container-name /bin/sh
sails new my-sails-project

Оба этих подхода создадут новый проект sails внутри контейнера в каталоге /my-sails-project.

Длинный ответ

Как упоминалось выше, если вы выполните команду sails new, используя один из этих двух подходов, он создаст проект внутри контейнера.Если вы хотите получить доступ к проекту вне контейнера (на вашем хост-компьютере), вам нужно создать том докера для монтирования папки внутри вашего контейнера на ваш хост, например:

docker run ... --volume "/some/path/to/dev/folder/on/your/host/machine:/my-sails-project

Это позволиту вас есть доступ ко всем файлам, созданным sails new на вашем хосте в указанном каталоге.Еще одна вещь, на которую следует обратить внимание: если вы запускаете сервер sails внутри контейнера, используя sails lift, вам нужно будет открыть этот порт так, чтобы сервер был доступен на вашем хост-компьютере, вы можете достичь этого с помощью флага --port, чтобысоздайте прямое сопоставление портов следующим образом:

docker run ... --port 1337:1337

где порт 1337 порт по умолчанию, используемый сервером sails.

Объединение всего этого вместе

Вы можете упростить запуск вашего контейнера, включив указанную выше конфигурацию запуска в файл docker-compose, и использовать его для запуска вашего контейнера. Docker Compose - это инструмент, который позволяет декоративно указать, как будет выполняться контейнер, например, как будет выглядеть ваш файл docker-compse.yml:

version: '3'
container_name: sails-dev
ports:
  - 1337:1337
volumes:
  - /some/path/to/dev/folder/on/your/host/machine:/my-sails-project

Затем вы можете запуститьзапустите ваш проект, запустив docker-compose up из того же каталога, что и файл docker-compose.yml (или используйте флаг -f, чтобы указать путь к нему).

Если вы обнаружите, что используете sails Команды часто, вы можете поместить команду docker exec в скрипт и вызывать ее с любыми аргументами, переданными ей.Если вы добавили этот скрипт в свой путь, вы могли бы вызывать команды rails прямо с вашего хоста, как если бы он был установлен изначально, например:

#!/bin/sh
docker exec -it sails-dev sails $*

Затем вы можете запускать sails команды через ./sails.sh some-sails-command.

...