Python: Patobulinta Makefile versija
Ši dokumentacija yra Išplėstiniai naudojimo būdai vadovo dalis. Visą vadovą rasite čia: Toliau su jūsų Python diegimais.
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti Python cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Įdiekite savo programą per kelias sekundes su paprastu
git push.- Naudokite savo domeno vardą ir pasinaudokite automatinės HTTPS sertifikatų konfigūracijos privalumais, kad padidintumėte saugumą.
- Mėgaukitės ramybe su automatinėmis atsarginėmis kopijomis, vieno paspaudimo atnaujinimais ir paprasta, skaidria bei prognozuojama kainodara.
- Gaukite optimalią veikimo ir tvirtą saugumo lygį dėka privačios ir dedikuotos VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: išbandyti Stackhero Python cloud hosting sprendimą užtrunka tik 5 minutes!
Žemiau pateikiamas patobulintas Makefile, kuris palaiko kelias taisykles:
make dev(arba tiesiogmake): Paleidžia programą kūrimo režimu.make deploy: Diegia programą į nuotolinį pavadinimustackhero. Tai gerai veikia, kai turite vieną Stackhero instanciją.make deploy-production: Diegia programą į nuotolinį pavadinimustackhero-production.make deploy-staging: Diegia programą į nuotolinį pavadinimustackhero-staging.
Šis
Makefileyra sukurtas tvarkyti situacijas, kai kodas nepasikeitė, išvengiant klaidos "Everything up-to-date".
Nukopijuokite ir įklijuokite šį turinį kaip savo naują Makefile:
# Taisyklė, kuri vykdoma pagal nutylėjimą, kai "make" kviečiamas be argumento
.DEFAULT_GOAL := dev
# Stackhero Python vykdys "run" taisyklę jūsų instancijoje.
# Tai komanda, kurią reikia vykdyti tiek gamybos, tiek staging aplinkose.
run:
ENV=production gunicorn app:app \
--error-logfile - \
-b 0.0.0.0:8080
# Komanda, kurią reikia naudoti kūrimo aplinkoje
dev:
python app.py
# Taisyklė "deploy" diegti į instanciją "stackhero".
# Tinka, jei turite tik vieną instanciją.
deploy:
@$(MAKE) -s deploy-script DEPLOY_REMOTE=stackhero DEPLOY_BRANCH=main
# "deploy-*" taisyklės diegia į instanciją pavadinimu "stackhero-*".
# Pavyzdžiui, vykdant "make deploy-production" diegiama į "stackhero-production",
# arba "make deploy-staging" diegiama į "stackhero-staging".
deploy-%:
@$(MAKE) -s deploy-script DEPLOY_REMOTE=stackhero-$* DEPLOY_BRANCH=main
# Vidinė diegimo taisyklė. Nemodifikuokite jos.
deploy-script:
@echo "Diegiama šaka \"${DEPLOY_BRANCH}\" į \"${DEPLOY_REMOTE}\"..."
@echo
@if [ -n "$$(git status --porcelain)" ]; then \
echo "Negalima diegti, nes yra neįsipareigojusių pakeitimų:"; \
echo "\e[0m"; \
git status -s; \
echo ""; \
echo "\e[0;31m"; \
echo "Galite naudoti šią komandą pakeitimams įsipareigoti:"; \
echo "git add -A . && git commit -m \"Jūsų žinutė\""; \
echo "\e[0m"; \
exit 1; \
fi
@git push --dry-run ${DEPLOY_REMOTE} ${DEPLOY_BRANCH} 2>&1 | grep -q -F "Everything up-to-date"; \
EXIT_CODE=$$?; \
if [ $$EXIT_CODE -eq 0 ]; then \
echo -n "Nieko naujo diegti... Priverstinis diegimas (tai sukurs naują commit'ą)? (y/N) "; \
read answer && \
case $$answer in \
y|Y|yes|YES) \
git commit --allow-empty -m "Priverstinis atnaujinimas diegimo tikslu į \"${DEPLOY_REMOTE}\"" ; \
;; \
*) \
echo "Nieko diegti!"; \
exit 1; \
;; \
esac \
fi
git push ${DEPLOY_REMOTE} ${DEPLOY_BRANCH}