Краткий ответ
Да, вы можете выполнить любую команду паруса, как если бы на вашем хост-компьютере были установлены паруса.После запуска контейнера вы можете использовать команду 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
.