在Docker容器内运行sails new

4

我是新手,正在尝试使用Docker创建一个sails项目。

我有以下疑问:

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

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

1个回答

4

简短回答

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

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

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

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服务器,那么你需要暴露该端口,以便在主机上访问该服务器,你可以通过使用--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.yml文件相同的目录中运行docker-compose up来启动项目(或使用-f标志指定其路径)。

如果您经常运行sails命令,您可以将docker exec命令放入脚本中,并使用传递给它的任何参数调用该脚本。 如果您将此脚本添加到您的路径中,您可以像本地安装一样直接从主机调用rails命令,例如:

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

然后,您可以通过./sails.sh some-sails-command来运行sails命令。


很高兴能帮助@clluiz。如果这解决了你的困难,请将答案标记为“已接受”,这样下一个人就会知道这是否适用于你的问题。 - Ntokozo Zwane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接