Bereitstellen von Git Capistrano verwenden, ohne ein Hard-Reset?
-
21-08-2019 - |
Frage
Ich habe ein Problem im Moment, wo wir ein CMS innerhalb einer Website ausgeführt werden (Browsercms), die die Benutzer Dateien hochladen kann. Allerdings habe ich jedes Mal, tun ein deploy Capistrano läuft ein Hard-Reset so jede uploaded nuking Dateien.
Hat jemand irgendwelche Vorschläge, wie das Hard-Reset zu verhindern, und tut nur einen Zug oder einen Weg, um die hochgeladenen Dateien an anderer Stelle zu bewegen, ohne den Anwendungscode zu ändern?
Lösung
Dies ist vielleicht nicht der richtige Ansatz sein.
Sie sollten Ihre 'Bilder' Ordner in Ihrem .gitignore und Symlink die $ current_release / Bilder-Ordner $ shared / Bilder enthalten.
Dies kann automatisch bei jedem Einsatz erfolgen, wenn Sie in Ihrem deploy.rb setzen:
task :link_imgs do
run "ln -s #{shared_path}/photos #{release_path}/photos"
end
after "deploy:update_code", :link_imgs
Ich habe das gleiche mit meinem CMS gemacht und es funktioniert wie ein Charme
Andere Tipps
Dies ist nicht ganz Ihre Kriterien erfüllen „ohne den Anwendungscode ändern zu müssen“.
Jedoch, nachdem sie in ein ähnliches Problem lief ich mein hochgeladenes Bild von /public/images
verschoben, um das /public/system/images
Verzeichnis /public/system
wird von jedem Capistrano Einsatz nicht ‚versioniert‘, so dass die Bilder überleben.
Könnte es die Capistrano sein 'Versionierung' das Problem verursacht (anstelle eines git reset)
cap deploy Anrufe bereitstellen: update und einsetzen: restart
bereitstellen: update macht die Versionierung, das Kopieren von Material
einsetzen: restart hat die wahre Neustart überlasten sie bei Ihrer convenince, in der Regel in der config / deploy.rb Datei
namespace :deploy do
desc "Softly restart the server"
task :restart, :roles => :app, :except => { :no_release => true } do
my_own.restart_recipe
end
end