在docker容器中运行新帆

时间:2019-02-04 23:13:20

标签: docker sails.js

我是Docker的新手,我正在尝试使用它创建一个sails项目。 我有以下疑问:

我只想在容器中安装帆,我不想在主机中运行npm install -g帆,这样做是正确的还是我做错了?

由于我只想将Sails安装在容器中,是否可以使用sails new命令在容器中创建项目结构?

1 个答案:

答案 0 :(得分:4)

简短答案

是的,您可以执行任何sails命令,就像在主机上安装了sails一样。运行容器后,可以使用docker exec命令在容器内执行任何命令,例如:

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

或者您可以连接到容器的外壳并直接执行命令:

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

这两种方法都会在/my-sails-project目录中的容器内部 中创建一个新的sails项目。

详细答案

如上所述,如果使用这两种方法之一执行sails new命令,它将在容器内部 中创建项目。如果要访问容器外部(在主机上)的项目,则需要创建一个docker卷将容器内部的文件夹安装到主机,例如:

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

这将使您可以访问由sails new在主机上指定目录中创建的所有文件。还有一点需要注意的是,如果您使用sails lift在容器内运行sails服务器,则需要公开该端口,以便可以在主机上访问该服务器,您可以使用{{1 }}标志来创建端口转发映射,如下所示:

--port

其中端口docker run ... --port 1337:1337 是Sails服务器使用的默认端口。

将它们组合在一起

您可以通过在1337文件中包含上述启动配置,来简化容器的启动,并使用它来启动容器。 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命令放在脚本中,并使用传递给它的任何参数进行调用。如果将此脚本添加到路径中,则可以直接从主机调用rails命令,就像它是本地安装的一样,例如:

docker exec

然后,您可以通过#!/bin/sh docker exec -it sails-dev sails $* 运行sails命令。

相关问题