我有种预感docker可以极大地改善我的webdev工作流程- 但我还没有设法解决如何将docker添加到堆栈中的问题。
基本软件堆栈如下所示:
提供自定义LAMP堆栈的Docker映像
我可以想象工作流程看起来如下所示:
Dockerfile
~/dev/cmsdir
~/dev/cmsdir/
/var/www/
/dev/cmsdir/
cmsdir
/var/www
现在,在纸面上看起来一切都很好,但是我不确定这是否是正确的方法。
在本地进行开发时,如何使数据库在容器实例的重新启动之间保持不变?还是我需要在旋转容器之前每次都运行sql-dump?
我是否应该为db和apache服务器分别设置容器实例?还是为上述用例配备一个容器就足够了?
如果将单独的容器用于数据库和服务器,我如何同时自动上下旋转它们?
我实际上将如何安装/dev/cmsdir/到容器目录中/var/www/?我应该为此使用数据量吗?
我错过任何陷阱了吗?有什么可以简化的吗?
对于开发- 另一个选择是使用数据卷从主机/开发机映射mysql数据目录。这样,您可以使用git(在主机上)管理mysql的数据文件(在docker中),并在需要时随时(在启动mysql容器之前)“重新加载”初始状态。
是的,我认为您应该为db提供一个单独的容器。
我只使用基本脚本:
#!/bin/bash
$JOB1 = (docker run … /usr/sbin/mysqld) $JOB2 = (docker run … /usr/sbin/apache2) echo MySql=$JOB1, Apache=$JOB2
是的,您可以使用data-volumes -v开关。我将其用于开发。您可以使用只读挂载,因此,如果需要,将不会对此目录进行任何更改(您的应用程序应将数据存储在其他任何地方)。
docker run -v=/home/user/dev/cmsdir:/var/www/cmsdir:ro image /usr/sbin/apache2
无论如何,对于最终部署,我将使用dockerfile构建和映像 ADD /home/user/dev/cmsdir /var/www/cmsdir
ADD /home/user/dev/cmsdir /var/www/cmsdir