【发布时间】:2016-01-18 22:58:39
【问题描述】:
我正在使用 docker-compose 编排的“系统”中开发一项服务。该服务是用编译语言编写的,我需要在进行更改时重新构建它。我正在尝试找到快速迭代更改的最佳方法。
我尝试了 2 个“工作流程”,它们都依赖于通过 volume: 链接到源目录来获取最新源。
- 用
docker-compose up -d调出所有支持容器 - 停止正在开发的服务的容器
- 使用镜像
docker-compose run --name SERVICE --rm SERVICE /bin/bash运行一个新容器 - 在该容器中运行编译并在暴露的端口上运行应用程序。
- 通过停止正在运行的进程然后重新构建来重新启动。
- (需要 Dockerfile
CMD来构建并运行服务) - 停止服务:
docker-compose kill SERVICE - 重启服务
docker-compose up -d --no-deps SERVICE
问题是重启都需要很长时间与在本地重启服务(在我的笔记本电脑上独立于 docker 运行)。对于可以热重载更改文件的解释语言,这种设置似乎没问题,但我还没有找到适合编译语言服务的快速系统。
【问题讨论】:
-
docker 是在您的笔记本电脑上运行,还是远程运行?想知道“与在本地重新启动服务”是什么意思。是什么导致它“重启时间过长”?编译速度慢吗?开始了吗?
-
我试图在问题中更清楚地说明这一点。 Docker 通过 docker-machine 运行。当我说“在本地运行”时,我的意思是在完全不使用 docker 的情况下构建和运行服务。这是一个选项,但这意味着我需要更改数据库 URL 等内容。
-
啊,对,我最好的猜测是,首先,主机和 VirtualBox VM 之间的文件共享(说得好听一点)性能不是很好;这是 VirtualBox 文件共享的限制。其次,VM 可能未针对最大性能进行调整,这可能会影响编译持续时间。您是否尝试过,例如增加 VM 的内存量和/或 CPU 数量?
-
不,我没有这样做。我会在 virtualbox 中执行此操作还是通过 docker-machine 命令执行此操作?
-
创建新机器时可以指定附加选项; docs.docker.com/machine/drivers/virtualbox,例如
--virtualbox-memory和--virtualbox-cpu-count。如果是用于现有机器,您可以使用 VirtualBox GUI,请参阅stackoverflow.com/questions/32834082/…
标签: docker build development-environment docker-compose