我是新来的码头,我正在尝试创建一个帆项目使用它。我有以下疑问:
我只想在容器中安装帆,我不想在我的主机上运行npm安装-g帆,这样做是正确的,还是我错了?
由于我希望只在容器中安装sails,所以可以使用sails新命令在容器中创建项目结构?
发布于 2019-02-05 12:41:10
,简短的答案,
是的,您可以像安装在主机上一样执行任何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 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-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命令放入脚本中,并使用传递给它的任何参数调用该命令。如果将此脚本添加到path中,您可以直接从主机调用rails命令,就好像它是本地安装的一样,例如:
#!/bin/sh
docker exec -it sails-dev sails $*然后可以通过sails运行./sails.sh some-sails-command命令。
https://stackoverflow.com/questions/54525696
复制相似问题