当前位置: 首页 > 面试题库 >

如何在开发中编辑Docker容器中的代码?

平俊茂
2023-03-14
问题内容

/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.dhtml" target="_blank">脚本清理该卷并复制新内容,如下所示:

rm -r /srv/myapp/*
rm -r /srv/myapp/.[!.]*
cp -r /srv/myapp.deploy.dev/. /srv/myapp
rm -r /srv/myapp.deploy.dev


 类似资料:
  • 如何编辑主机上下载的docker容器中的配置文件? 我正在使用本教程,但不确定在哪里可以找到并编辑traefik.toml文件

  • 问题内容: 因此,我和我的团队都购买了Docker- 对于部署和测试而言,它很棒。我真正的问题是如何建立出色的开发人员体验,尤其是围绕编写Python应用程序的问题,但是这个问题可以推广到nodejs,Java等。 问题:编写Python应用程序时,我真的很喜欢具有不错的linting / autocomplete功能,那里有一些非常好的编辑器(Atom,VSCode,PyCharm)提供了这些功

  • 我知道intellij有一个docker容器插件,但它似乎不允许我在容器内部开发。这个想法很简单,我不想将我的主机配置为具有正确的环境工具。我宁愿只设置一个docker容器,然后使用intellij在容器本身中查找lib、功能等。 这将对c、java和scala开发人员非常有帮助,而且对调试也非常有用。 那么,有可能用intellij在docker容器中开发吗?

  • 问题内容: 为了解决我的应用程序的错误并调试问题,该应用程序分布在多个容器中,我经常在容器中编辑文件: 我完全懒惰并安装nano并直接在容器中进行编辑,或者 我将cp文件从容器中移出,对其进行编辑,复制并重新启动容器 这些是进入容器构建新内容之前的中间步骤,这比上述操作要花很多时间(当然,这只是中间/摆弄)。 现在,我经常破坏容器的启动程序,在这种情况下,它是节点脚本或python Web服务器脚

  • 试图修复我的应用程序在多个容器上拆分的错误和调试问题,我经常编辑容器中的文件: > 要么我完全懒惰,直接在容器中安装nano并进行编辑,要么 我将文件从容器中取出,编辑它,复制回来,然后重新启动容器 这些都是为容器构建新内容之前的中间步骤,这比执行上述操作要长得多(当然,这只是中间步骤)。 现在我经常破坏容器的启动程序,在破坏情况下是节点脚本或python webserver脚本,两者通常都因语法