首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我的开发环境将我的代码库装载到容器中时,我如何构建docker映像?

当我的开发环境将我的代码库装载到容器中时,我如何构建docker映像?
EN

Stack Overflow用户
提问于 2016-12-01 15:37:40
回答 1查看 1.1K关注 0票数 3

我篡改了我的应用程序,但为了看到我的变化,我必须重建我的形象,它不会给我的应用程序的实时预览。

因此,我创建了一个连接redis到我的节点容器的docker环境,然后将源代码从主机挂载到节点应用程序,并监视它的变化。但是,由于代码不是UnionFS的一部分,所以不能进行容器化。

如何设置一个开发环境,该环境可以生成被篡改的映像,但不必每次更改代码库时都重新启动?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-01 22:27:20

您开发和装入目录的容器映像应该与在其他地方运行应用程序所生成的映像相同,如果无法实现,则至少要基于生产映像。

以一个简单的节点应用程序为例,下面是基本图像:

代码语言:javascript
复制
FROM node:6
ENV NODE_ENV=production
RUN npm install forever -g
COPY docker-entrypoint.sh /entrypoint.sh
WORKDIR /app
COPY package.json /app/
RUN npm install
COPY . /app
EXPOSE 3000
ENTRYPOINT ["/entrypoint.sh"]
CMD ["node", "/app/index.js"]

生产

代码语言:javascript
复制
docker run \
  --detach \
  --restart always \
  --publish 3000:3000 \
  myapp

开发

代码语言:javascript
复制
docker run \
  --publish 3000:3000 \
  --volume .:/app \
  --env NODE_ENV=development \
  myapp \
  forever -w /app/index.js

所以我修改了坐骑,但是基本图像是相同的。挂载文件替换容器中的“构建”文件。

对于node.js应用程序,有一些额外的开发更改。环境变量和用于在更改时监视/重新启动进程的命令。在更改npm install中的依赖项时,还需要在容器中使用docker exec $container npm install手动执行package.json

开发文档

如果您需要对开发环境进行大量修改,并且不想手动指定它们,您可以创建一个包含开发细节的开发映像FROM (您的基本映像)。Dockerfile.dev

代码语言:javascript
复制
from myapp:latest
env NODE_ENV=development
volume ["/app"]
command ["forever", "-w", "--watchDirectory", "/app" "/app/index.js"]

然后,开发细节将存储在新映像中,但仍然链接到您的真实映像中。

代码语言:javascript
复制
docker build -f Dockerfile.dev -t myapp-dev .
docker run -p 3000:3000 -v .:/app myapp-dev
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40914696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档