作者:好人森森_195 | 来源:互联网 | 2022-12-29 01:15
我有一个angularjs应用程序,正在使用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文件来实现)
1> SCB..:
没错,您应该使用卷来存储此类内容。在开发过程中,为其提供与COPY
目录相同的卷。它将使用您计算机上的任何内容覆盖它,无需重建映像,甚至无需重新启动容器。适合发展。
实际烘焙图像进行生产时,您可以删除卷,将其保留COPY
在里面,然后将获得确定性的容器。我建议您在这里阅读本文:https : //docs.docker.com/storage/volumes/。
通常,有3种方式进行卷。
使用在您的dockerfile中定义它们VOLUME
。
就个人而言,我从未做到过。与其他两种方法相比,我看不出这样做的好处。我相信,当您要将卷用作永久数据存储时,执行此操作将更为常见。当您只想使用实时开发环境时,没有那么多。
在调用时定义它们docker run
。
docker run ... -v $(pwd)/src:/usr/src/app ...
这很棒,因为如果您COPY
的dockerfile中./src /usr/src/app
的文件在运行映像时会暂时覆盖该目录,但是当您不使用它时,该目录仍可以进行部署-v
。
使用docker-compose。
我的个人推荐。Docker大大简化了运行中的容器。为了简单起见,仅调用docker run ...
但基于给定的docker-compose.yml
配置自动执行参数。
创建一个dev
服务,指定要挂载的卷,要链接到的其他容器等。然后使用docker-compose up ...
或docker-compose run ...
根据需要启动它。
明智地使用卷将戏剧性地减少您的开发周期。真的会建议调查他们。