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