/srv我的容器中包含所有网站代码。
/srv
我的Dockerfile使用git下载代码,并将其作为映像的一部分,以便更轻松地部署到生产环境。
但是,如何在开发中编辑代码?我认为使用卷是解决方案,例如:-v /docker/mycontainer/srv:/srv。但是它将覆盖容器中的目录。如果是我第一次运行它,它将清空它,因为主机中没有任何东西。因此,我在Dockerfile中所做的一切都丢失了。
-v /docker/mycontainer/srv:/srv
我还/srv/myapp希望在应用程序的不同版本之间共享目录和文件,例如:/srv/myapp/user- uploads。这是专业网站开发中的常见做法。
/srv/myapp
/srv/myapp/user- uploads
那么我该怎么做才能做所有这些事情?:
有没有办法进行反向卷安装?我的意思是使容器覆盖主机,而不是相反。
我想一种解决方法可能是在运行容器的守护程序之前将/ srv复制到/srv.deployment- copy。然后,当我运行守护程序时,检查/srv.deployment-copy是否存在并将所有内容复制回/ srv。这样,我可以将/ srv用作卷,并且仍然能够使用Dockerfile将代码部署到该卷。我已经为所有docker命令使用了别名,因此自动执行此操作不会有问题。你怎么看?
我发现在开发中编辑代码的最佳方法是像往常一样安装所有内容(包括克隆应用程序的存储库),但将容器中的所有代码都说成即可/srv/myapp.deploy.dev。然后,使用的rw卷启动容器/srv/myapp,并使用init.d脚本清理该卷并复制新内容,如下所示:
/srv/myapp.deploy.dev
rw
rm -r /srv/myapp/* rm -r /srv/myapp/.[!.]* cp -r /srv/myapp.deploy.dev/. /srv/myapp rm -r /srv/myapp.deploy.dev