gpt4 book ai didi

node.js - 如何动态更改通过docker运行的 Node 项目中的内容

转载 作者:搜寻专家 更新时间:2023-10-31 23:31:13 25 4
gpt4 key购买 nike

我有一个 angularjs 应用程序,我正在使用 docker 运行。docker 文件如下所示:-

FROM node:6.2.2

RUN npm install --global gulp-cli && \
npm install --global bower

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

COPY package.json /usr/src/app/
COPY bower.json /usr/src/app/
RUN npm install && \
bower install -F --allow-root --config.interactive=false
COPY . /usr/src/app

ENV GULP_COMMAND serve:dist

ENTRYPOINT ["sh", "-c"]
CMD ["gulp $GULP_COMMAND"]

现在,当我对任何 html 文件进行任何更改时,它不会动态加载到网页上。我必须停止容器,将其删除,再次构建镜像,删除较早的镜像,然后从新镜像重新启动容器。我每次都必须这样做吗? (我是 docker 的新手,我想这个问题是因为我的源代码没有放入卷,但我不知道如何使用 docker 文件来完成)

最佳答案

你是对的,你应该为这样的东西使用卷。在开发过程中,为其提供与 COPY 目录相同的卷。它会用你机器上的任何东西覆盖它,不需要重建图像,甚至不需要重新启动容器。非常适合开发。

当实际烘焙您的图像以用于生产时,您删除卷,保留 COPY,您将获得一个确定性容器。我建议您在这里通读这篇文章:https://docs.docker.com/storage/volumes/ .

一般来说,做卷有3种方式。

  1. Define them in your dockerfile using VOLUME .

    就我个人而言,我从未这样做过。我真的看不出这与其他两种方法相比有什么好处。我相信当您的卷打算充当永久数据存储时,这样做会更常见。当您只是尝试使用您的实时开发环境时,就不是那么回事了。

  2. Define them when calling docker run .

    docker run ... -v $(pwd)/src:/usr/src/app ...

    这很好,因为如果你的 dockerfile 中的 COPY./src/usr/src/app 那么它会在运行图像时暂时覆盖目录,但是当您不使用 -v 时,它仍然用于部署。

  3. Use docker-compose .

    我的个人推荐。 Docker compose 极大地简化了运行中的容器。为了简单起见,只需调用 docker run ... 但会根据给定的 docker-compose.yml 配置自动执行参数。

    创建一个 dev 服务,指定您要挂载的卷、您希望它链接到的其他容器等。然后使用 docker-compose up ... 启动它> 或 docker-compose run ... 取决于您的需要。

巧妙地使用卷将显着缩短您的开发周期。真的会建议调查它们。

关于node.js - 如何动态更改通过docker运行的 Node 项目中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48677281/

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