运行 在 docker 集装箱内航行新船
Run sails new inside a docker container
我是 Docker 的新手,我正在尝试使用它创建一个 sails 项目。
我有以下疑问:
我只想在容器中安装 sails,我不想 运行 在我的主机中 npm install -g sails,这样做是正确的还是我错了?
由于我只想在容器中安装sails,是否可以使用sails new 命令在容器中创建项目结构?
简答
是的,您可以执行任何 sails 命令,就像您在主机上安装了 sails 一样。一旦有了容器运行ning,就可以使用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
命令,它将在 inside 容器中创建项目。如果你想访问容器外的项目(在你的主机上),你需要创建一个docker卷来将你容器内的文件夹挂载到你的主机上,例如:
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
然后你可以通过 运行ning 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
.
我是 Docker 的新手,我正在尝试使用它创建一个 sails 项目。 我有以下疑问:
我只想在容器中安装 sails,我不想 运行 在我的主机中 npm install -g sails,这样做是正确的还是我错了?
由于我只想在容器中安装sails,是否可以使用sails new 命令在容器中创建项目结构?
简答
是的,您可以执行任何 sails 命令,就像您在主机上安装了 sails 一样。一旦有了容器运行ning,就可以使用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
命令,它将在 inside 容器中创建项目。如果你想访问容器外的项目(在你的主机上),你需要创建一个docker卷来将你容器内的文件夹挂载到你的主机上,例如:
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
然后你可以通过 运行ning 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
.