最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

试图将sails js项目停靠

运维笔记admin8浏览0评论

试图将sails js项目停靠

试图将sails js项目停靠

我正在尝试使用Docker和Docker Compose为sails js创建一个项目。我想要的是在Docker中生成sails代码并在当前目录中生成结构。

当我尝试生成它时,由于我有一个Dockerfile和一个docker-compose.yml目录不是空的,我收到一个错误,说该目录不是空的。

这是Dockerfile

FROM node:8.9.3

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY . /usr/src/app

RUN npm install -g sails
RUN sails new .
RUN sails lift

使用此配置,我得到当前目录的错误不为空。

考虑一下我尝试生成代码并复制它。

...

RUN npm install -g sails
RUN sails new .

# I do the COPY after generating the code
COPY . /usr/src/app

RUN sails lift

这似乎工作,因为我没有在我的本地环境中得到任何错误我没有生成的代码。

也许这个过程是错误的,我应该将其作为依赖项安装,然后使用docker-compose运行一个容器来生成代码,但我想我会在尝试在非空目录中生成代码时遇到同样的问题。

回答如下:

这是一个使用两个单独图像的想法。一个图像是您的Sails实用程序图像,另一个图像是实际应用程序。

Utility Image

首先,Sails实用程序映像。这非常简单。它只是一个基于安装了Sails的Node.js的映像。在新目录中创建以下Dockerfile

FROM node:8.9.3
RUN npm install -g sails
WORKDIR /usr/src/app  
ENTRYPOINT ["sails"]

然后构建它:

docker build -t sails .

这甚至可能是一个公众形象。这里没有任何特定的项目。我们只是用它来做sails命令。

Application

现在,创建另一个新文件夹并导航到它。它需要是空的。使用如下命令创建新的sails项目:

docker run -it --rm -v $PWD:/usr/src/app sails new .

这将使用实用程序映像在当前目录中创建Sails项目。这是我们新的Sails项目的根源。

让我们为这个Sails项目创建Dockerfile.dockerignore文件。为此,我们只需依靠-onbuild图像的node变体来处理大部分繁重的工作。创建以下Dockerfile

FROM node:8.9.3-onbuild
EXPOSE 1337

以及随附的.dockerignore文件:

node_modules

现在我们可以构建应用程序:

docker build -t myproject

构建应用程序后,我们可以使用以下命令启动它:

docker run -p 1337:1337 myproject

Node.js图像的-onbuild变体将为我们执行npm install并将npm start作为默认命令。默认的Sails package.json设置start脚本以使用node app.js运行应用程序。有关它的作用的更多信息,请参阅https://github/nodejs/docker-node/blob/master/8/onbuild/Dockerfile。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论