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

2024-01-28

我所有网站的代码都在下面/srv在我的容器中。

我的 Dockerfile 使用 git 下载代码,并将其作为映像的一部分,以便更轻松地部署到生产环境。

那么在开发中如何编辑代码呢?我认为使用卷是解决方案,例如:-v /docker/mycontainer/srv:/srv。但它会覆盖容器中的目录。如果这是我第一次运行它,它会清空它,因为主机中没有任何内容。所以我在 Dockerfile 中所做的一切都会丢失。

里面还有目录和文件/srv/myapp我想在我的应用程序的不同版本之间共享,例如:/srv/myapp/user-uploads。这是一个常见做法 http://astrails.com/blog/2008/12/17/deployment-process-requirements在专业的网络开发中。

那么我该怎么做才能做到所有这些事情呢?:

  • 在开发中编辑 /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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

开发中如何编辑Docker容器中的代码? 的相关文章

  • Tomcat - 多个 webapps 文件夹

    是否可以有多个文件夹来放置要部署的应用程序 这些是如何定义的 是否可以将一个文件夹限制为仅是 domain com 的应用程序 而不是其他域 Thanks 看一眼conf server xml
  • Docker 不遵循构建目录中的符号链接

    我正在对一个应用程序进行 Docker 化 其中涉及通过 Clang 将二进制文件与其他 C 文件链接 我们维护二进制文件的符号链接版本 因为它们在整个代码库中使用 我的 Docker 构建目录包含整个代码库 包括源文件以及这些源文件的符号
  • 重启docker Windows 10命令行

    我试图弄清楚如何在命令行中重新启动 docker 以便我可以制作一个 bat 脚本来重新启动它并启动一些容器 我使用管理员访问权限创建了一个 dos 提示符并运行以下命令 PS C Windows system32 gt net stop
  • 更改Docker容器中的mysql密码

    我如何更改 docker 容器中的 root 密码 因为一旦我停止 mysql 服务 容器就会自动停止 我应该停止 mysql 容器并部署一个新容器吗 您可以使用正在运行的容器更改它docker exec session https doc
  • heroku node.js bash:节点:找不到命令

    在 cedar stack 上的 heroku 上部署我的应用程序似乎存在一个奇怪的问题 我的节点进程甚至没有被调用 我的Proc文件如下 web node web js 和我的 package json 文件 name fuuzik ve
  • 如何从 Dockerfile 安装 Python 3.7 和 Pip

    我正在尝试构建基于 Ubuntu 18 04 的自定义 Docker 映像 Ubuntu 预装了 Python 3 6 但我想 1 安装 Python 3 7 2 将其设置为默认 Python 版本 这样就可以使用python代替pytho
  • 如何让 Docker 容器在系统启动时自动启动?

    假设我有一个要运行的 Docker 容器 那么我可以调用 docker run 一切都很好 是否有一种内置方法可以在系统崩溃并重新启动时自动重新启动容器来运行容器 如果是这样 这在 Docker Compose 中也可用吗 是的 docke
  • 部署 dacpac 所需的权限

    我正在尝试使用 sqlpackage exe 在租户上部署 dacpac 目前 我正在向将部署此功能的帐户授予 SysAdmin 或 db owner 权限 并且它工作正常 但在生产中 如果目标租户数据库属于其他应用程序 我可能无法获得这些
  • 我如何在 docker 构建过程中传递参数或绕过它? [复制]

    这个问题在这里已经有答案了 我为我的 PHP 应用程序编写了一个 Dockerfile 我不是从 dockerhub 开始创建它 而是从头开始创建它 eg FROM ubuntu 18 04 RUN apt get update apt g
  • 网络插件未准备好:cni 配置未初始化

    Kubelet未就绪 runtime network not ready NetworkReady false reason NetworkPluginNotReady message docker network plugin is no
  • 如何从 docker 容器在主机上运行 shell 脚本?

    如何从docker容器控制主机 例如 如何执行复制到主机的bash脚本 这个答案只是一个Bradford Medeiros 解决方案的更详细版本 这对我来说也是最好的答案 所以功劳归于他 在他的回答中 他解释了该怎么做 命名管道 但不完全是
  • 如何在 Visual Studio 上关闭调试后访问在 docker 上运行的网站

    我在 net core 上构建了一个非常简单的 Web 应用程序和 Web api 并配置了 docker compose 以使它们能够通过同一网络正确通信 在 Visual Studio 上 当我在 Docker Compose 项目上运
  • 是否可以在具有高山风味的 docker 容器内构建 AOSP?

    我对 AOSP 非常陌生 我正在尝试在 Docker 上设置完整的 AOSP 以构建 Docker 映像 例如 Alpine 或 Ubuntu 映像 如果不可能 请让我知道无法在内部设置 AOSP 的原因泊坞窗图像 或者我需要编写 Dock
  • 如何在docker compose中为每个容器创建单独的卷

    我创建了一个docker我想为其运行多个容器的图像 这个 docker 镜像依赖于一些东西 这些东西对于所有容器来说都是相同的 但唯一的区别是容器的配置 version 2 4 services s1 image testdockerimg
  • 配置 Eclipse 将 App Engine 类预先捆绑到单个 JAR 中以加快预热速度

    在与另一家同样使用 App Engine 的公司的同事进行讨论后 他告诉我 他通过以下步骤成功地将应用程序预热时间从约 15 秒缩短到约 5 秒 配置 Eclipse 将编译过程中生成的类捆绑到单个 JAR 文件中 配置 Eclipse 以
  • Docker 进程被神秘的“Killed”消息杀死

    在 docker 容器中运行 python 脚本 一切似乎都运行顺利 看到一些 STDOUT 消息 大约 5 分钟后我得到了Killed消息 没有进一步的解释 并且该过程停止 查询数据库可能是磁盘空间问题 也可能是 OOM 问题 我不确定
  • 如何将 ARG 值传递给 ENTRYPOINT?

    Docker 1 9 允许将参数传递给 dockerfile 参见链接 https docs docker com engine reference builder arg https docs docker com engine refe
  • 来自不安全注册表的 Dockerfile

    有没有办法从 Dockerfile 构建 docker 映像 该 Dockerfile 使用来自 Gitlab 托管的本地不安全注册表的基础映像 例如 如果我的 Dockerfile 是 FROM insecure registry loc
  • 我应该在 Heroku 上部署 Ruby on Rails 应用程序吗?

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 关于我自己的一些情况 我今年 24 岁 去年从北卡罗来纳州立大学毕业 获得了分析硕士学位 统计 数学之类的 我没有很强的编程背景 这对我的问题非
  • 对于 Web 应用程序来说,您理想的 git 分支架构是什么?

    我们是一个由开发人员组成的小团队 正在构建 Web 应用程序 我们目前拥有一个实时 测试和多个开发环境 您会建议什么分支架构 以便理想情况下每个开发人员都可以处理他的功能 这些功能可以在不影响其他开发人员 功能的情况下进行测试和部署 目前

随机推荐

  • 从时间戳在指定范围或持续时间内的 pandas DataFrame 中删除重复行

    我有一个像这样的数据框 Subject Verb Object Date Bill Ate Food 7 11 2015 Steve Painted House 8 12 2011 Bill Ate Food 7 13 2015 Steve
  • 分页在 AJAX updatepanel 内的 asp.net gridview 中不起作用

    我有一个最初绑定到 sqldatasource 控件的 asp net gridview 但是当用户按下外部按钮时 它会获取数据表而不是 SQLdatasource 控件的内容 因此 我必须在 gridview 的 PageIndexCha
  • Rails 3 - best_in_place 编辑

    希望有一个简单的答案 我正在使用宝石最佳地点 https github com bernat best in place而且效果很好 我试图弄清楚如何使用以下方法创建下拉菜单 type gt select collection gt 我想要
  • 常量性和指向指针的指针

    我很困惑const关键词 我有一个接受字符串数组作为输入参数的函数和一个接受可变数量参数的函数 void dtree joinpaths char output buffer int count void dtree joinpaths a
  • MySQL 导入 - 如何忽略 Drop table ifexists 行?

    我使用 mysqldump 将 2 个相同的数据库 名称和表结构相同 导出到两个 sql 文件中 我想将它们合并到一个文件中 但是 这两个数据库在每个表之前都有一个 删除表 行 这意味着如果我先导入 db1 然后导入 db2 则在导入 db
  • Android 操作栏两行文本标签

    有没有一种方法 也许是不间断空格线上的一些特殊字符 可以强制操作栏中的菜单项具有两个行标签 我认为这看起来比长的单行选项卡标签更好 Thanks R 编辑 附加信息 我很抱歉 到目前为止 我已经设法避免需要溢出菜单 可能是因为我正在为具有漂
  • 如何为文本冒险游戏实现调度表?

    我正在做一个C 中的文本冒险 http code google com p escape text rpg source browse Escape 有人建议我使用调度表 http en wikipedia org wiki Dispatc
  • SpriteKit 场景中出现意外的物理主体

    我正在使用 SpriteKit 实现一个质量弹簧系统 许多小型物理体与 SKPhysicsJointSpring 实例连接在一起 一些粒子在穿过场景中心时会被卡住 场景中央似乎有一个静止的小物体 我不知道它为什么在那里 这是一个简单的方法来
  • 如何在家设置 git lfs 服务器?

    我正在利用git lfs用于在 github 存储库中存储大文件 唯一的问题是有配额git lfs 具体来说 您每月只能存储 1 GB 并且只能流式传输 下载 1 GB 用完后 您必须支付 5 美元才能再获得 5 GB 这可能会变得昂贵 我
  • SVG 中的厚贝塞尔曲线,无伪影

    我尝试画粗一点贝塞尔线 http pomax github io bezierinfo 对于自定义桑基图 http bost ocks org mike sankey 我用SVG 路径 https developer mozilla org
  • 当 HTTPContext .Current 为 Nothing 时如何使用 Server.MapPath

    当我需要从网络服务器上的目录中删除一些图像文件时 我有一些代码可以正常工作 Dim ImageURL As String dsImages Tables 0 Rows iImgRow Item ImageURL Dim physicalNa
  • Visual Studio 中的“将所有警告视为错误,除了...”

    在 Visual Studio 中 我可以选择 将警告视为错误 选项 以防止在出现任何警告时编译我的代码 我们的团队使用此选项 但我们希望保留两个警告作为警告 有一个选项可以抑制警告 但我们确实希望它们显示为警告 所以这是行不通的 看来获得
  • 在 CNTLM 代理后面使用 pip

    我正在尝试在工作中使用代理后面的 pip 答案之一来自这个帖子 https stackoverflow com questions 9698557 how to use pip on windows behind an authentica
  • WPF 如何处理与 null 对象的属性的绑定?

    我有一个使用 itemTemplate 的 listBox 其中包含以下行
  • Access SQL 中的转义 '

    我正在尝试用 vba 进行域查找 如下所示 DLookup island villages village txtVillage 这工作正常 直到 txtVillage 类似于 Dillon s Bay 此时撇号被视为单引号 并且我收到运行
  • 将 gif 图像粘贴到 NSPasteboard 中

    我正在开发 osx 应用程序 我想粘贴一个Gif图像到粘贴板 我怎样才能做到这一点 我拥有的是 NSImage NSP纸板 我想做的是将图像粘贴到粘贴板中 我可以粘贴PNG图像 但我需要的是粘贴GIF image 我现有的代码 let im
  • Angular 客户端错误记录到服务器

    我想将客户端角度错误记录到服务器 所以我遵循this https stackoverflow com questions 43530156 angular 2 client side errors and this https stacko
  • 如何以编程方式触发 UIContextMenuInteraction 上下文菜单?

    我已将 UIButton 设置为 UINavigationController 内 UIViewController 中的 rightBarButtonItem 并将 iOS13 上下文菜单与其关联 长按按钮会按预期显示上下文菜单 有没有办
  • 内联样式无需引号即可工作

    例如 我有这把小提琴 http jsfiddle net qeBZk 您可以清楚地看到我缺少内联样式中的引号 但它仍然正确显示 据我所知 他们从来没有说过不使用引号是允许的 那么 是这样的 jsFiddle 中的一个错误 一个预期的功能 如
  • 开发中如何编辑Docker容器中的代码?

    我所有网站的代码都在下面 srv在我的容器中 我的 Dockerfile 使用 git 下载代码 并将其作为映像的一部分 以便更轻松地部署到生产环境 那么在开发中如何编辑代码呢 我认为使用卷是解决方案 例如 v docker myconta