Bir PHP uygulaması nasıl dağıtılır?
Bu makale, dünya çapında web’e güç veren en popüler komut dosyası dillerinden biri olan PHP’yi tartışacaktır. Avantajlarını, dezavantajlarını ve dağıtım seçeneklerini inceleyeceğiz.
Bu makalenin sonunda, basit bir PHP uygulamasını önyükleyebilecek, dockerize edebilecek ve Back4app Containers‘a dağıtabileceksiniz.
Contents
PHP’ye Genel Bakış
PHP (“PHP: HyperText Processor “ın kısaltması) popüler ve ücretsiz bir genel amaçlı betik dilidir. Rasmus Lerdorf tarafından 1993 yılında oluşturulmuş ve daha sonra 1995 yılında piyasaya sürülmüştür.
PHP başlangıçta web geliştirme için tasarlanmıştır, ancak artık sunucu tarafı komut dosyası oluşturma, komut satırı komut dosyası oluşturma ve masaüstü uygulama yazma için de kullanılmaktadır.
PHP’nin en güzel yanı doğrudan HTML içine gömülebilmesidir. HTML çıktısı almak için uzun komutlar kullanmaya gerek yoktur (C veya Perl’de görüldüğü gibi). İşte hızlı bir örnek:
<!DOCTYPE html>
<html lang="en">
<head>
<title>My first PHP website</title>
</head>
<body>
<?php
$cool_scripting_language = "PHP";
echo "$cool_scripting_language is a cool scripting language!";
?>
</body>
</html>
Bir kullanıcı bu siteyi talep ettiğinde PHP çalıştırılacak ve yalnızca işlenmiş HTML çıktısı döndürülecektir. Bizim durumumuzda, “PHP harika bir betik dilidir!” diyen bir mesaj. PHP, tarayıcı yerine sunucu tarafında çalıştırılır (JavaScript gibi).
PHP’nin tamamen nesne yönelimli bir dil olup olmadığı tartışmalıdır. Yine de isim alanları, sınıflar ve nesneler gibi standart nesne yönelimli özellikleri destekler.
Bu yazının yazıldığı sırada, PHP’nin en son kararlı sürümü 8.2’dir, ancak birçok PHP uygulaması daha eski sürümlerde kalmaya devam etmektedir.
Bazı geliştiriciler PHP’nin öldüğünü iddia ediyor, ancak durum böyle değil. W3Techs anketine göre, PHP şu anda sunucu tarafı programlama dili bilinen tüm web sitelerinin %77,4’üne güç sağlamaktadır.
Bu betik dili Facebook, Wikipedia, Mailchimp, çeşitli CMS yazılımları gibi yüksek trafikli web siteleri tarafından da kullanılmaktadır ve hatta geçmişte YouTube tarafından da kullanılmıştır.
PHP’nin Faydaları
İyi Performans
PHP, ASP.NET, JSP ve Python gibi diğer sunucu tarafı betik dillerinden daha performanslıdır. Bazı kıyaslamalar PHP’nin Python’dan üç kata kadar daha hızlı olduğunu göstermektedir.
PHP, HTML sayfaları oluşturma, form gönderimlerini işleme ve veritabanı ile etkileşim gibi web ile ilgili görevleri yerine getirmede en iyisidir.
Aksine, ağır hesaplama görevleri veya karmaşık algoritmalar için PHP’den daha uygun seçenekler vardır.
Çapraz platform
PHP platformdan bağımsızdır. Windows, Linux, Unix ve Mac dahil olmak üzere çeşitli platformlarda çalışır. Ayrıca, Apache HTTP, Caddy, Nginx, LiteSpeed gibi neredeyse tüm popüler web sunucularıyla uyumludur.
Popüler betik dili, Czarek Tomczak’ın phpdesktop‘u sayesinde masaüstü uygulamaları geliştirmek için de kullanılabiliyor. Bu kütüphaneyi Electron gibi düşünebilirsiniz ama PHP için. Phpdesktop uygulamaları Windows ve Linux’ta çalışabilir, ancak Mac OS X‘te çalışmaz (henüz).
Veritabanı Desteği
Betik dili, SQL ve NoSQL veritabanları da dahil olmak üzere çeşitli veritabanlarını destekler. PHP ile kullanılacak en popüler veritabanı MySQL’dir(LAMP yığını), ancak PostgreSQL veya başka herhangi bir veritabanı türünü kullanmanızı engelleyen hiçbir şey yoktur.
Tüm PHP soyutlama katmanlarını ve satıcıya özel veritabanı uzantılarını resmi web sitesinde görebilirsiniz.
Canlı Ekosistem
PHP, sahip olduğu canlı ekosistem sayesinde bu kadar popülerdir. Birçok harika PHP framework’ü geliştirme sürecini önemli ölçüde hızlandırır, kod tabanını basitleştirir ve daha temiz/daha standart kod yazmanız için size rehberlik eder.
Bu yazının yazıldığı sırada en popüler PHP çerçeveleri şunlardır:
Daha fazla harika framework ve kaynak için GitHub’daki awesome-php sayfasına göz atın.
WordPress, Joomla, Drupal ve Magento gibi PHP kullanan çok sayıda CMS de vardır.
Öğrenmesi Kolay
PHP, basit bir sözdizimine sahip yeni başlayan dostu bir dildir. World wide web (WWW), HTML, CSS ve JavaScript’in temellerine aşina iseniz öğrenmesi nispeten kolaydır. Birçok geliştirici PHP yazabilir, ancak yalnızca birkaçı temiz kod kurallarını takip eden sürdürülebilir PHP yazabilir.
PHP’nin Sınırlamaları
Sınırlı Hata Ayıklama Araçları
PHP hataları ele almada kötüdür ve diğer popüler programlama dillerine kıyasla hata ayıklama araçlarından yoksundur. Projeniz gelişmiş hata ayıklama gerektiriyorsa, büyük olasılıkla Xdebug, Krumo veya Kint gibi 3. taraf yazılımları kullanmanız gerekecektir.
PhpStorm ve Visual Studio gibi bazı popüler IDE’ler de yerleşik PHP hata ayıklama araçlarına sahiptir.
Gevşek Yazılmış
Yukarıda da belirtildiği gibi, PHP bir programlama dili değil, bir betik dilidir. Betik dillerinin en yaygın özelliklerinden biri gevşek tipli olmalarıdır.
Bu, değişken türünün kullanılmadan önce açıkça bildirilmesi gerekmediği anlamına gelir. Bunun da ötesinde, çalışma zamanı sırasında herhangi bir zamanda değişebilir.
Bu da PHP uygulamalarının hataya daha yatkın olmasına ve hata ayıklamanın zorlaşmasına neden olur.
Güvenlik Açıkları
PHP uygulamaları yıllar boyunca çeşitli hacker saldırılarının hedefi olmuştur. Bunun başlıca nedeni PHP’nin açık kaynaklı yapısı ve yeni geliştiriciler için düşük giriş maliyetidir.
En iyi bilinen PHP açıklarından bazıları SQL enjeksiyonları, siteler arası komut dosyası oluşturma (XSS), siteler arası istek sahteciliği (CSRF) ve uzaktan kod yürütmedir (RCE).
Güvenli kodlama uygulamalarını takip ederek bu güvenlik açıklarının önlenebileceğini unutmayın. Girdiyi her zaman sterilize ettiğinizden ve asla kullanıcı tarafından sağlanan girdiyi çalıştırmadığınızdan emin olun.
Vanilla PHP’nin Modası Geçti
Vanilla PHP (yani herhangi bir kütüphane veya framework içermeyen PHP) modern uygulamalar oluşturmak için oldukça demode olabilir. Hızlı bir şekilde güvenli uygulamalar oluşturmak için bir çerçeve kullanmanız gerekir.
PHP Dağıtım Seçenekleri
PHP uygulamaları farklı platformlara dağıtılabilir. PHP uygulamalarını dağıtmak için en yaygın bulut modelleri şunlardır:
- Hizmet Olarak Altyapı (IaaS),
- Hizmet Olarak Platform (PaaS),
- Hizmet Olarak Konteynerler (CaaS).
PHP uygulamalarını dağıtmak için en iyi bulut modeli mevcut değildir. Nihayetinde seçim, proje gereksinimlerinize, bütçenize ve istediğiniz soyutlama düzeyine bağlıdır.
Genellikle geliştirici ekipleri, yönetimi daha kolay olduğu ve IaaS’den çok daha pahalı olmadığı için PaaS veya CaaS’ı tercih eder. Şimdi en iyi PHP barındırma sağlayıcılarından bazılarına bakalım.
Back4app Containers
Back4app Containers, Back4app tarafından sunulan mükemmel bir Containers as a Service (CaaS) hizmetidir. Platform, geliştiricilerin dockerized uygulamaları oluşturmasına, ölçeklendirmesine ve hızlı bir şekilde dağıtmasına olanak tanır.
Bir uygulamayı Back4app Containers’a dağıtmak, GitHub deponuzu içe aktarmak ve bir düğmeye tıklamak kadar kolaydır. Platform harika bir sürekli entegrasyon ve dağıtım sistemine sahiptir, kesintisiz dağıtımları, gerçek zamanlı dağıtım takibini ve daha fazlasını destekler!
Back4app Containers’ın bir diğer avantajı da küçük uygulamaları barındırmak için harika olan ücretsiz katmanıdır. Uygulamanız ölçeklendikçe, basit ve öngörülebilir bir fiyatlandırma planını izleyerek premium katmanlara yükseltebilirsiniz.
Google Cloud Run
Google Cloud Run, konteynerli uygulamaları dağıtmak ve ölçeklendirmek için tam otomatik bir Hizmet Olarak Konteynerler (CaaS) platformudur. 2019’da halka açık hale geldi ve o zamandan beri çok popülerlik kazandı.
Cloud Run’ın kullanımı nispeten kolaydır, özellikle de diğer GCP ürünlerine aşinaysanız. Cloud Run’ın bazı avantajları arasında ücretsiz SSL sertifikaları, diğer GCP çözümleriyle iyi entegrasyon ve sıfıra kadar ölçeklendirme yer alıyor.
Bu yazının yazıldığı sırada Google, yeni kullanıcılar için 300 $ ücretsiz kredi sunuyordu.
Heroku
Heroku, öncü Hizmet Olarak Platform (PaaS) çözümlerinden biridir. Heroku 2007 yılında kurulmuştur ve günümüzde de oldukça popülerdir.
PHP, Java, Node.js, Go, Scala ve Python dahil olmak üzere çeşitli programlama dilleri için kapsamlı destek sunar. Platform kaygan ve kullanıcı dostu bir kullanıcı arayüzüne sahiptir, büyük ölçeklenebilirlik sağlar ve çok çeşitli eklentiler sunar.
Heroku eskiden ücretsiz bir plan ve ücretsiz PostgreSQL ve Redis örnekleri sağlıyordu, ancak dolandırıcılık ve botlarla ilgili endişeler nedeniyle 2022’de bunları iptal etmeye karar verdiler. Bununla birlikte, Heroku uygulamaları dağıtmak için mükemmel bir platform olmaya devam ediyor.
AWS Elastic Beanstalk
AWS Elastic Beanstalk (EB) harika bir Hizmet Olarak Platform (PaaS) çözümüdür. Olgun ve iyi test edilmiş bir platformdur ve 2011 yılında kurulmuştur. EB yerel olarak Go, Java, Node.js, PHP, Python, Ruby’yi destekler ve dockerized uygulamaların dağıtılmasına izin verir.
Elastic Beanstalk ile ilgili en iyi şey, onu AWS S3, AWS RDS, AWS CloudFront gibi diğer AWS çözümleriyle birleştirebilmenizdir. AWS yeni müşterilere ücretsiz bir katman sunuyor.
PHP Dağıtım Süreci
Bu bölümde, basit bir Laravel web uygulamasını Back4app Containers‘a nasıl bootstrap edeceğimizi ve dağıtacağımızı inceleyeceğiz.
Ön Koşullar
- Temel PHP anlayışı.
- Docker ve konteynerizasyon teknolojisi hakkında temel bilgi.
- Composer ile birlikte Node.js ve Docker yerel makinenize yüklenir.
Konteynerleştirme teknolojisine aşina değilseniz, Konteynerler nedir?
Laravel nedir?
Laravel, hızlı bir şekilde etkileyici ve zarif bir sözdizimi kullanarak uygulamalar oluşturmanıza olanak tanıyan harika bir PHP çerçevesidir. Sonuç olarak, temiz ve özlü bir kod elde edersiniz.
Çerçeve, model-view-controller (MVC) mimari modeline dayanmaktadır. Hepsinden iyisi, Laravel tamamen ücretsiz ve açık kaynaklıdır.
İlk olarak 2011 yılında piyasaya sürülmüştür ve şu anda en popüler PHP çerçevelerinden biridir. Esnekliği sayesinde her türlü web uygulamasını oluşturmak için kullanılabilir.
Laravel Avantajları
- Performanslı ve esnek.
- Veritabanı ile çalışmayı kolaylaştırır ( Eloquent ORM aracılığıyla).
- Yerleşik kimlik doğrulama ve yetkilendirme.
- Entegre güvenlik önlemleri (CSRF, XSS).
Bazı Laravel alternatifleri arasında Symfony, CodeIgniter, CakePHP ve Laminas Project bulunmaktadır.
Uygulama Oluştur
Aşağıdaki adımlar Composer ‘ın yüklü olmasını gerektirecektir. Eğer sahip değilseniz, resmi web sitesinden indirin.
Composer komut satırı arayüzü üzerinden yeni bir Laravel projesi oluşturarak başlayın:
$ composer create-project laravel/laravel sample-app
sample-app
yerine özel bir isim koymaktan çekinmeyin.
Bu komut yeni bir Laravel projesi ve varsayılan dizin yapısını oluşturacaktır. Bunun da ötesinde, composer install
aracılığıyla tüm bağımlılıkları yükleyecektir. Komut en fazla üç dakika sürecektir.
İşlem tamamlandığında, aşağıdaki dizin yapısını göreceksiniz:
sample-app/
├── app/ contains the core code of your application
│ ├── Console
│ ├── Exceptions
│ ├── Http
│ ├── Models
│ └── Providers
├── bootstrap is used to bootstrap the framework
├── config contains all your configuration files
├── database contains database factories, migrations, seeders
├── public contains your index.php and static assets (JS, images, CSS)
├── resources contains all your views and templates (along with raw assets)
├── routes is used to define all your application endpoints
├── storage contains logs and other auto-generated stuff
├── tests can be utilized for automatic testing
└── vendor contains your Composer dependencies
Ardından, aşağıdaki komutu kullanarak geliştirme sunucusunu çalıştırın:
$ php artisan serve
INFO Server running on [http://127.0.0.1:8000].
Press Ctrl+C to stop the server.
Son olarak, favori web tarayıcınızı açın ve http://localhost:8000/ adresine gidin. Varsayılan Laravel dizin sayfasını görmelisiniz.
Uygulamayı Değiştir
Bu bölümde, yeni bir API uç noktası kaydederek uygulamayı biraz değiştireceğiz.
Önceki bölümde belirtildiği gibi, tüm rotalar routes klasöründe tanımlanır. Rotalar klasörü aşağıdaki dosyaları içerir:
routes/
├── api
├── channels
├── console
└── web
Web dizini son kullanıcı rotalarını, API rotaları için api ‘yi, konsol komutlarını tanımlamak için konsolu ve son olarak olay yayın kanalları için kanalları tanımlar.
Laravel 5.3’ten önce, app/Http/routes.php adresinde bulunan tek bir rota dosyası vardı.
routes/api.php adresine gidin ve aşağıdaki gibi yeni bir API uç noktası kaydedin:
<?php
// routes/api.php
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
// new endpoint
Route::get('/', function () {
return response()->json([
'detail' => 'Back4app Containers rocks!',
]);
});
Harika, bu kadar.
Geliştirme sunucusunu tekrar başlatın (eğer henüz çalışmıyorsa) ve http://localhost:8000/ adresine gidin. Hala varsayılan Laravel sayfasını görebiliyor olmalısınız, ancak /api/‘ye giderseniz aşağıdaki mesajı görmelisiniz:
{
"detail": "Back4app Containers rocks!"
}
Dockerize Uygulaması
Bu bölümde, Laravel uygulamamızı bir Dockerfile kullanarak dockerize edeceğiz.
Dockerfile
Dockerfile, Docker Engine’in bir Docker görüntüsü oluşturmak ve çalıştırmak için gerçekleştirmesi gereken tüm talimatları içeren düz bir metin dosyasıdır. Talimatlar genellikle büyük harflerle yazılır ve ardından özel miktarda argüman gelir. Örnek:
INSTRUCTION arg1 arg2 ... argn
Devam edin ve proje kök dizininde aşağıdaki içeriğe sahip bir Dockerfile oluşturun:
FROM php:8.1-apache
# Set the working directory
WORKDIR /var/www/html
# Install the necessary libraries
RUN apt-get update && apt-get install -y \
libonig-dev \
libzip-dev
# Install PHP extensions
RUN docker-php-ext-install \
mbstring \
zip
# Copy over the Laravel project
COPY . .
# Install Composer along with the dependencies
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
RUN composer install
# Change ownership of our applications
RUN chown -R www-data:www-data /var/www/html
# Copy over the .env file and generate the app key
COPY .env .env
RUN php artisan key:generate
# Expose port 80
EXPOSE 80
# Adjusting Apache configurations
RUN a2enmod rewrite
COPY apache/apache-config.conf /etc/apache2/sites-available/000-default.conf
Bu Dockerfile php:8.1-apache
‘yi temel imaj olarak kullanır, gerekli işletim sistemi bağımlılıklarını yükler ve projeyi kopyalar. Daha sonra PHP bağımlılıklarını Composer aracılığıyla yükler, bir Laravel anahtarı oluşturur, port 80’i açığa çıkarır ve son olarak Apache yapılandırmasını kopyalar.
Dockerfiles hakkında daha fazla bilgi edinmek için Dockerfile referansına göz atın.
.dockerignore
İmaj boyutunu azaltmak için bir .dockerignore dosyası kullanabiliriz. Bu dosya .gitignore dosyasına benzer şekilde çalışır. İmaja dahil edilmesini istemediğimiz belirli dosya ve dizinleri çıkarmamızı sağlar.
Proje kök dizininde aşağıdaki içeriğe sahip bir .dockerignore dosyası oluşturun:
/.phpunit.cache
/node_modules
/public/build
/public/hot
/public/storage
/storage/*.key
/vendor
.phpunit.result.cache
auth.json
npm-debug.log
yarn-error.log
/.fleet
/.idea
/.vscode
.dockerignore dosyasını ihtiyaçlarınıza göre değiştirmekten çekinmeyin.
Oluşturun, Çalıştırın ve Test Edin
Bir görüntü oluşturmaya çalışmadan önce Docker’ın kurulu olduğundan emin olun:
$ docker --version
Docker version 20.10.22, build 3a2c30b
Bunu doğruladıktan sonra görüntüyü oluşturabilirsiniz:
$ docker build -t laravel-sample:1.0 .
Komuta özeti:
docker build
imajı oluşturmak için kullanılır.-t laravel-sample:1.0
görüntüyü etiketler (görüntü adları genelliklename:version
yapısına sahiptir)..
derleme bağlamını belirtir. Bizim durumumuzda bu proje köküdür.
Ardından, bir konteyneri döndürmek için yeni oluşturulan görüntüyü kullanın:
$ docker run -p 80:80 --name laravel-sample-container -d laravel-sample:1.0
Komuta özeti:
docker run
bir konteyneri döndürmek için kullanılır.-p 80:80
ana bilgisayardaki80
numaralı bağlantı noktasını konteynerdeki80
numaralı bağlantı noktasına bağlar.--name laravel-sample-container kont
eyner adını belirtir.-d
görüntüyü müstakil modda, yani terminali işgal etmeden çalıştırır.laravel-sample:1.0
Docker motoruna hangi görüntünün kullanılması gerektiğini söyler.
Şimdi çalışan konteynerleri
kontrol ederseniz, laravel-sample-container
‘ı görmelisiniz:
$ docker ps
CONTAINER IMAGE COMMAND CREATED PORTS
b0bfbd laravel-sample:1.0 "docker-php..." 2s ago 0.0.0.0:80->80/tcp laravel
Son olarak, favori web tarayıcınızda http://localhost/ adresini ziyaret ederek uygulamayı görüp göremediğinizi kontrol edin.
GitHub’a itin
Uygulamanızı Back4app Containers’a dağıtmak için öncelikle kaynak kodunuzu GitHub’a yüklemeniz gerekir. Back4app Containers, kodunuzu belirli bir dala işlediğinizde otomatik olarak dağıtım yapan bir CI/CD sistemi kullanır.
Aşağıdaki adımlar bir GitHub hesabınızın olmasını (ve Git ‘in yüklü olmasını) gerektirecektir.
https://github.com adresine giderek ve yeni bir depo oluşturarak başlayın:
Ardından, uygun bir ad seçin ve diğer her şeyi varsayılan olarak bırakın. Ardından depoyu oluşturmak için “Depo oluştur” düğmesine tıklayın:
Deponuz oluşturulduktan sonra uzak URL’yi alın:
Şimdi yerel projenize geri dönün ve komut satırını açın. Kodu GitHub’a göndermek için öncelikle yerel bir Git deposunu aşağıdaki şekilde başlatmanız gerekir:
$ git init
Ardından, tüm dosyaları VCS’ye aktarın ve yeni bir commit oluşturun:
$ git add .
$ git commit -m "init"
Son olarak, kodu uzaktan kumandaya itin:
$ git push origin master
İşte bu kadar! GitHub depo sayfasını yenilediğinizde, tüm dosyaların uzaktaki Git deposuna başarıyla itildiğini göreceksiniz.
Uygulama Dağıtma
Back4app Containers’a bir uygulama dağıtmak için öncelikle oturum açmanız (veya henüz bir hesabınız yoksa kaydolmanız ) gerekir. Daha sonra oturum açtığınızda uygulama kontrol paneli sayfasına yönlendirileceksiniz.
Ardından, uygulama oluşturma sürecini başlatmak için “Yeni uygulama oluştur” düğmesini kullanın:
Konteynerli bir uygulama dağıttığımız için “Containers as a Service” seçeneğini seçin:
Ardından, GitHub’ınızı Back4app hesabınıza bağlayın ve önceki adımda oluşturduğumuz depoyu içe aktarın.
Uygulamanıza özel bir ad verin ve diğer her şeyi varsayılan olarak bırakın.
Bir uygulama oluşturmak için “Uygulama Oluştur “a tıklayın. Back4app kaynak kodunu GitHub’dan otomatik olarak çekecek ve siz tıkladıkça docker imaj oluşturma sürecini başlatacaktır. Birkaç dakika sonra uygulamanın durumu “Hazır” olarak değişecektir.
Bu gerçekleştiğinde, sayfayı tarayıcınızda açmak için soldaki bağlantıyı kullanın.
Bu kadar!
Sonuç
Sonuç olarak, PHP’yi, avantajlarını, dezavantajlarını ve dağıtım seçeneklerini öğrendiniz. Artık bir Laravel uygulamasını Back4app’e nasıl bootstrap edeceğinizi ve dağıtacağınızı biliyorsunuz.
Eğitim boyunca incelediğimiz konular Laravel çerçevesinin yüzeyini ancak çizdi. Laravel dokümantasyonuna göz atarak her zaman daha fazlasını öğrenebilirsiniz.
Kaynak kodu back4app-containers-php GitHub deposunda mevcuttur.
Gelecek adımlar
- Laravel Mimari Kavramlarına ve Eloquent ORM‘ye bakın.
- Yönetilen bir MySQL veritabanı oluşturun ve Back4app Containers uygulamanızı buna bağlayın.
SSS
PHP nedir?
PHP, popüler ve ücretsiz bir genel amaçlı betik dilidir. Web için tasarlanmıştır ancak sunucu tarafı betikleme, komut satırı komutları ve masaüstü uygulamaları için de kullanılabilir. PHP şu anda web sitelerinin yaklaşık %80’inde kullanılmaktadır ve Facebook, Wikipedia, Slack gibi yoğun trafiğe sahip birçok site tarafından tercih edilmektedir.
PHP’nin avantajları nelerdir?
– İyi performans
– Platformlar arası uyumluluk
– Veritabanı desteği
– Canlı bir ekosistem
– Öğrenmesi kolay
PHP’nin dezavantajları nelerdir?
– Sınırlı hata ayıklama araçları
– Gevşek veri tipi sistemi
– Güvenlik açıkları
– Standart PHP (Vanilla PHP) modası geçmiş durumda
Bir PHP uygulaması nasıl dağıtılır?
1. PHP uygulamanızı yazın.
2. Uygulamanızı Docker ile paketleyin ve yerel olarak test edin.
3. Kaynak kodunuzu GitHub’a gönderin.
4. Back4app Containers hesabı oluşturun.
5. GitHub deposunu içe aktarın ve dağıt butonuna tıklayın!