dokku - 从子文件夹运行 Rails 4 应用程序

Gra*_*vor 5 ruby-on-rails ruby-on-rails-4 docker dokku

我当前的 Rails 应用程序分为 2 个文件夹。

/base  
/app
Run Code Online (Sandbox Code Playgroud)

在我的 gemfile 中使用以下行将基础引用到应用程序中

gem 'base', path: "../base"
Run Code Online (Sandbox Code Playgroud)

我正在尝试 git 将此存储库部署到 dokku - 但是这是失败的,我假设这是由于 dokku 无法确定正确的构建包,因为它只在根目录中查找以确定应用程序类型等。

dokku 跟踪的片段:

remote: + DOCKER_ARGS+=
remote: ++ docker run -d -v /home/dokku/sws/cache:/cache -e CACHE_PATH=/cache dokku/sws /build/builder
remote: + id=2439409a62c2da4c32086149ad404dd4c6ec974e83aa7fe0d8e06d092396b69f
remote: + docker attach 2439409a62c2da4c32086149ad404dd4c6ec974e83aa7fe0d8e06d092396b69f
-----> Unable to select a buildpack
remote: + exit_code=1
remote: + set -e
Run Code Online (Sandbox Code Playgroud)

在处理 Heroku 上的相同问题时,我尝试使用将子目录部署到 Heroku中提到的 config.ru - 但这似乎不起作用。

有什么想法吗?

Tum*_*tsu 3

我在 Node.js 应用程序中遇到了类似的问题,其中我有一个包含多个文件夹的存储库,但只有一个包含 Dokku-app。我以 bash 脚本的形式找到了以下不优雅的解决方案:

#!/bin/bash

git init
git add . --all
git commit -m "dokku deploy"
git remote add dokku [dokkuserver]
git push dokku master
rm -rf .git
Run Code Online (Sandbox Code Playgroud)

我只是从我的应用程序的文件夹中运行这个脚本。它创建一个临时 git 存储库,将其推送到 Dokku,然后删除本地存储库。我之所以说这是一个不优雅的解决方案,是因为我知道这可以通过顶部文件夹中的一些 Git 子树魔法来实现(我的同事前段时间这样做过),但我没有时间弄清楚。更懂 Git 的人可能会对此有所帮助。