gpt4 book ai didi

node.js - 尝试对 sails js 项目进行 dockerize

转载 作者:太空宇宙 更新时间:2023-11-04 03:23:17 24 4
gpt4 key购买 nike

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

当我尝试生成它时,由于目录不为空,因为我有一个 Dockerfiledocker-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 实用程序图像,另一张图像是实际的应用程序。

实用程序图像

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

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

然后构建它:

docker build -t sails .

这甚至可能是公共(public)形象。这里没有任何特定于您的项目的内容。我们将用它来执行 sails 命令。

申请

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

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

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

让我们为此 Sails 项目创建 Dockerfile.dockerignore 文件。为此,我们将仅依靠 node 镜像的 -onbuild 变体来处理大部分繁重的工作。创建以下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.com/nodejs/docker-node/blob/master/8/onbuild/Dockerfile了解有关其用途的更多信息。

关于node.js - 尝试对 sails js 项目进行 dockerize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47837693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com