docker 容器中的 Rails 应用程序在开发中不会重新加载

2024-04-11

我跟着这个docker-compose 教程 https://docs.docker.com/compose/rails/关于如何启动 Rails 应用程序。 它运行完美,但当我更改控制器时,应用程序不会重新加载。

还可以缺少什么吗?


我也遇到了这个问题,你需要做两件事:

  1. 将当前目录映射到 Docker 当前托管文件的位置。
  2. 将 config.file_watcher 更改为 ActiveSupport::FileUpdateChecker

Step 1:

在您的 Dockerfile 中,检查您在何处复制/添加文件。

查看我的 Dockerfile:

# https://docs.docker.com/compose/rails/#define-the-project

FROM ruby:2.5.0
# The qq is for silent output in the console
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs vim

# Sets the path where the app is going to be installed
ENV RAILS_ROOT /var/www/

# Creates the directory and all the parents (if they don't exist)
RUN mkdir -p $RAILS_ROOT

# This is given by the Ruby Image.
# This will be the de-facto directory that 
# all the contents are going to be stored. 
WORKDIR $RAILS_ROOT

# We are copying the Gemfile first, so we can install 
# all the dependencies without any issues
# Rails will be installed once you load it from the Gemfile
# This will also ensure that gems are cached and onlu updated when 
# they change.
COPY Gemfile ./
COPY Gemfile.lock ./
# Installs the Gem File.
RUN bundle install

# We copy all the files from the current directory to our
# /app directory
# Pay close attention to the dot (.)
# The first one will select ALL The files of the current directory, 
# The second dot will copy it to the WORKDIR!
COPY . .

The /var/www目录是这里的关键。这是图像的内部文件夹结构,也是您需要将当前目录映射到的位置。

然后,在 docker-compose 中定义一个名为volumes的索引,并将该路由放在那里(也适用于V2!):

version: '3'
services:
  rails:
    # Relative path to Dockerfile. 
    # Docker will read the Dockerfile automatically
    build: .
    # This is the one that makes the magic
    volumes:
    - "./:/var/www"

上图仅供参考。检查 docker-compose 和 Dockefile 是否位于同一目录中。他们not一定需要这样,您只需确保正确指定目录即可。

docker-compose 工作相对于文件. The ./意味着它将把当前的 docker-compose 目录(在本例中是整个 ruby​​ 应用程序)作为托管图像内容的位置。

The :只是一种区分图像将要出现的位置和图像实际存在的位置的方法。

下一部分:/var/www/与您在 Dockerfile 中指定的路径相同。

Step 2:

打开development.rb(可以在/config/environments中找到)

并寻找config.file_watcher, 代替:

config.file_watcher = ActiveSupport::EventedFileUpdateChecker

for:

config.file_watcher = ActiveSupport::FileUpdateChecker

这将采用轮询机制来代替。

如果这不起作用,请尝试在环境文件中添加以下行,在本例中为development.rb:

config.cache_classes = false

就是这样!

请记住,任何不是routes.rb 且不在应用程序文件夹内的内容,很可能需要手动重新加载Rails 应用程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker 容器中的 Rails 应用程序在开发中不会重新加载 的相关文章

随机推荐

  • java.lang.RuntimeException:在 android.media.MediaRecorder.start(本机方法)处启动失败

    我正在处理电话录音 当我开始录制电话时 不幸的是它停止了 它给出错误 MediaRecorder 启动失败 2147483648 我请告诉我我的代码有什么问题 这是我的代码 public class incomingcall extends
  • 将 PDF 文档打印到 esc/pos 热敏打印机

    我们正在使用 xamarin forms 开发 POS APP 因为我们需要将收据打印到通过 LAN 连接的 esc pos 热敏打印机 我们的应用程序支持多语言 通过更改代码页使用 esc pos 命令打印多种语言效果非常好 但它仅适用于
  • 使用 JAX-RS 获取服务器的基本 url

    如何使用 JAX RS 获取服务器的基本 url 基本上 当程序位于本地主机上时 我想要 http localhost 8080 当程序位于实时服务器上时 我想要 http www theSite com 我正在使用泽西岛框架 是的 您可以
  • Firestore 每日配额

    我使用开发了一个示例应用程序Angular and 火库 我大约两个月前部署了我的应用程序 从那时起一直运行良好 然而 在上周 我注意到该应用程序在使用几个小时后因 客户端离线 错误而被阻止 我发现使用2个小时后我超出了每日的阅读操作限额
  • 在负载平衡的 Tornado 站点上使用 apache 基准测试获取失败的请求,但没有记录

    也许这是一个关于 ab 的问题 而不是关于 Tornado 的问题 但有些事情没有意义 我这样运行基准测试 ab n 100 http localdomainname 2 tornados being 1 nginx Concurrency
  • python 2 doctest 为何会失败,但失败消息中的值却没有差异?

    我在 Windows 中使用 Python 2 7 9 我有一个 UTF 8 编码的 python 脚本文件 其中包含以下内容 coding utf 8 def test func u gt gt gt test func u return
  • 以 RTL 格式格式化时 TextView 内的数字会反转

    里面的数字TextView以 RTL 格式格式化时会发生反转 当数字位于文本内的末尾时TextView他们逆转了 我怎样才能以编程方式解决这个问题 例如 下面的数字是相反的 它们应该显示为 误解 像 ARABIC 这样的 RTL 语言中的数
  • 如何解决对等依赖安装问题

    我正在尝试使用 npm 安装react contenteditable 但是 eslint 的对等依赖项不允许我安装以下错误的 risal 我正在使用 Ubuntu 18 04 LTS 操作系统 这是我用来安装react contented
  • 根据控制器指定不同的_Layout.cshtml

    我创建了一个 asp mvc3 项目 我想要根据选择的控制器有不同的 Layout cshtml 这是因为控制器 1 有 2 个按钮 控制器 2 有 3 个按钮 控制器 3 有 4 个按钮 每个控制器适用于特定类型的用户 因此取决于登录 我
  • Laravel 中的 Socket.io 轮询 404

    我正在尝试使用 Socket io 实现一个聊天应用程序 进入我的 Laravel 应用程序 聊天应用程序本身运行良好 但我在 Laravel 中遇到问题 我尝试在端口 8000 上提供 Laravel 服务 并在 8000 上提供聊天服务
  • 访问回调 user_is_anonymous 的反义词是什么?

    我知道在 drupal 模块中使用它来指定只有匿名用户才能看到该模块 仅指定登录用户的回调是什么 我有一个页面 我只想让登录用户访问 谢谢 它是用户 is logged in http api drupal org api function
  • 在 AVD 上运行自定义 ROM

    有谁知道是否可以在 AVD 上运行自定义 ROM 我该怎么做 谢谢 如果您自己构建自定义 rom 则在构建自定义 rom 后 您可以使用以下命令启动它emulator 但要做到这一点 你首先需要为模拟器构建 ROM 通常 full gene
  • 数据库结果的数组结构

    这可能是一个非常微不足道的问题 但是以下哪种方法是构造返回数据库结果的数组的最佳实践 比如说博客文章列表 对文章进行排序和分组 或者对元素进行排序和分组 Array title gt Array 0 gt Untitled 1 gt Unt
  • current_prolog_flag double_quotes DCG(代码或字符)?

    在使用 SWI Prolog DCG 时 我注意到有些人注意到 set prolog flag double quotes codes Jan http www swi prolog org pldoc man section string
  • 为什么正则表达式 ((x,y)|(x,z)) 是不确定的?

    为什么正则表达式 x y x z 像 Core Java 一书中所说的那样是不确定的 作者给出了他的观点 当解析器看到 x 时 它不知道采取两个替代方案中的哪一个 这个表达式可以以确定性形式重写为 x y z 谁能给我一个解释吗 为了具有确
  • Android 活动上下文为空

    所以我这里有这些代码 它运行时不会崩溃 但是 当我将 this 传递到网格适配器时 mContext 为空 我尝试传递 getApplicationContext 但仍然无法使 getImage 方法正常运行 因为 getResources
  • 我将如何获得 WPF Windows 应用程序的许可[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我开发了一个小型应用程序 我想尝试并销售它 但我不熟悉如何最好地做到这一点 我将如何锁定该程序以供试用1 我将如何处理接受付款 考虑到
  • SASS 或 LESS 关键帧百分比循环

    我正在测试一些特殊的东西 我正在尝试在关键帧内循环以动态地将百分比写入其中 我已经用 SASS 测试过类似的东西 但它不起作用 keyframes test for i from 0 through 100 i do special stu
  • Mercurial:保持两个分支同步但存在某些持久差异?

    我是一名使用 django 自己工作的 Web 开发人员 我正在尝试了解如何最好地使用 Mercurial 部署网站 我想要的是能够保留一个可用于生产和开发工作的存储库 生产 开发之间总会存在一些差异 例如 它们可能使用不同的数据库 开发总
  • docker 容器中的 Rails 应用程序在开发中不会重新加载

    我跟着这个docker compose 教程 https docs docker com compose rails 关于如何启动 Rails 应用程序 它运行完美 但当我更改控制器时 应用程序不会重新加载 还可以缺少什么吗 我也遇到了这个