Files
rails-app/start.sh

124 lines
2.9 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 简化的Rails应用启动脚本
set -e
echo "🚀 启动Rails应用..."
# 如果没有Rails应用创建一个
if [ ! -f config/database.yml ]; then
echo "📝 创建新的Rails应用..."
rails new . --force --database=sqlite3 --skip-git --skip-bundle
fi
# 安装依赖
echo "📦 安装依赖..."
bundle install
# 创建数据库
echo "🗄️ 创建数据库..."
rails db:create db:migrate || true
# 创建示例控制器
if [ ! -f app/controllers/welcome_controller.rb ]; then
echo "📝 创建示例页面..."
cat > app/controllers/welcome_controller.rb <<'RUBY'
class WelcomeController < ApplicationController
def index
@hostname = Socket.gethostname
@rails_version = Rails.version
@ruby_version = RUBY_VERSION
end
end
RUBY
mkdir -p app/views/welcome
cat > app/views/welcome/index.html.erb <<'HTML'
<!DOCTYPE html>
<html>
<head>
<title>Rails 8.1 on K3s</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
.container {
background: white;
padding: 40px;
border-radius: 10px;
box-shadow: 0 10px 40px rgba(0,0,0,0.2);
text-align: center;
max-width: 600px;
}
h1 {
color: #667eea;
margin-bottom: 20px;
}
.status {
background: #10b981;
color: white;
padding: 10px 20px;
border-radius: 5px;
display: inline-block;
margin: 20px 0;
}
.info {
text-align: left;
background: #f3f4f6;
padding: 20px;
border-radius: 5px;
margin-top: 20px;
}
.info p {
margin: 10px 0;
}
.emoji {
font-size: 48px;
margin-bottom: 20px;
}
</style>
</head>
<body>
<div class="container">
<div class="emoji">💎</div>
<h1>Rails <%= @rails_version %> on K3s</h1>
<div class="status">✅ 运行正常</div>
<div class="info">
<p><strong>Ruby版本:</strong> <%= @ruby_version %></p>
<p><strong>Rails版本:</strong> <%= @rails_version %></p>
<p><strong>数据库:</strong> SQLite3</p>
<p><strong>Pod主机名:</strong> <%= @hostname %></p>
<p><strong>访问域名:</strong> r1.jpd.net3w.com</p>
<p><strong>部署方式:</strong> GitOps (Gitea + ArgoCD)</p>
<p><strong>集群:</strong> JPD K3s Cluster</p>
</div>
<p style="margin-top: 20px; color: #6b7280;">
<%= Time.now.strftime("%Y-%m-%d %H:%M:%S") %>
</p>
</div>
</body>
</html>
HTML
# 配置路由
if ! grep -q "root.*welcome#index" config/routes.rb 2>/dev/null; then
cat > config/routes.rb <<'RUBY'
Rails.application.routes.draw do
root "welcome#index"
get "up" => "rails/health#show", as: :rails_health_check
end
RUBY
fi
fi
# 启动服务器
echo "🌐 启动Rails服务器..."
exec rails server -b 0.0.0.0 -p 3000