我篡改了我的应用程序,但为了看到我的变化,我必须重建我的形象,它不会给我的应用程序的实时预览。
因此,我创建了一个连接redis到我的节点容器的docker环境,然后将源代码从主机挂载到节点应用程序,并监视它的变化。但是,由于代码不是UnionFS的一部分,所以不能进行容器化。
如何设置一个开发环境,该环境可以生成被篡改的映像,但不必每次更改代码库时都重新启动?
发布于 2016-12-01 22:27:20
您开发和装入目录的容器映像应该与在其他地方运行应用程序所生成的映像相同,如果无法实现,则至少要基于生产映像。
以一个简单的节点应用程序为例,下面是基本图像:
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"]生产
docker run \
--detach \
--restart always \
--publish 3000:3000 \
myapp开发
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
from myapp:latest
env NODE_ENV=development
volume ["/app"]
command ["forever", "-w", "--watchDirectory", "/app" "/app/index.js"]然后,开发细节将存储在新映像中,但仍然链接到您的真实映像中。
docker build -f Dockerfile.dev -t myapp-dev .
docker run -p 3000:3000 -v .:/app myapp-devhttps://stackoverflow.com/questions/40914696
复制相似问题