İlişkili bir yazı bulamadım, diğer postlara göz atmak isteyebilirsin
Docker ile Strapi Kurulumu
Docker'ı henüz production ortamlarında kullanmasam da development ortamımda sürekli kullandığım bir tool. Bu makalemde Docker ile bir Strapi & PostgreSQL uygulamasını nasıl ayağa kaldıracağımızdan bahsedeceğim.
Strapi, ilişkili tablolarımızı kolayca yapmamızı sağlayan, açık kaynak içerik yönetim paneli. Bu tür yapılara Headless Cms deniliyor. Strapi bize content management'in yanı sıra authentication ve rest api olanağı da sunuyor. Hal böyle olunca da backend'i frontend'den koparmak kaçınılmaz oluyor (Headless CMS buradan geliyor). Strapi'nin Wordpress, Zoomla tarzı içerik yönetim araçlarından farkı da burada. Ön tarafta özgürüz. Ön yüzü, istediğimiz araçlarla geliştirip Strapi'nin bize sağladığı API - Db ile de entegrasyonumuzu sağlayabiliyoruz.
Yazı içeriği
Folder Yapisi & YAML
Strapi uygulamasını bir container'da kullanmak istiyorsak bilgisayarımızda Docker ın kurulu olduğundan emin olmanız gerekiyor. Ufak bir hatırlatmadan sonra klasör yapımıza göz atalım.
Windows için Docker Mac için Docker Linux için Docker
Öncelikle, Strapi ve PostgreSQL'i docker ile ayağa kaldıracağımız için klasör yapısı sadece .yaml dosyasından ibaret olacak.
my-strapi-project
├── docker-compose.yml
version: "3" # Docker-compose Versiyonu
services:
strapi: # Servis ismi
image: strapi/strapi # Docker'dan pull edilen Strapi image'I
environment: # Postgre SQL'e bağlanırken istenen ortam değişkenleri
DATABASE_CLIENT: postgres
DATABASE_NAME: strapi
DATABASE_HOST: postgres
DATABASE_PORT: 5432
DATABASE_USERNAME: strapi
DATABASE_PASSWORD: strapi
links:
- postgres:postgres # Postgres'e bağlandığımızı söylüyoruz
volumes:
- /app/:/srv/app # Birinci relative path: localimizden bulunan dosya yapısı (/app), ikincisi ise Docker Container'da bulunan app'in bulunduğu klasör. Bu sayede kaynak kodlara direkt localimizden müdahale edebileceğiz.
ports: # Uygulamanın dinlediğ port numarası.
- "1337:1337"
postgres:
image: postgres # Offical Database Image ismi
environment:
POSTGRES_USER: strapi # Database kullanıcı adı
POSTGRES_PASSWORD: strapi # Database şifre
volumes:
- ./data:/data/postgres # Burada yine volume'lama işlemi uyguluyoruz. Database'deki dataların bulunduğu klasörü, localimize çekiyoruz. Bu sayede container silindiğinde dataları kaybetmemiş oluyoruz.
ports:
- "5432:5432" # Database'in dinlediği port numarası.
Klasör Yapımız:
Yaml dosyamızı tamamladık, şimdi çalıştıralım.
Docker Compose
Yaml dosyamızda birbirine bağladığımız iki tane uygulama image'ımız var. Biri Strapi diğeri de Postgres. Yazılan parametlerin ne işe yaradıklarını kısaca comment olarak ekledim. Şimdi bu parametleri çalıştırma vakti.
Uygulamamızın bulunduğu klasöre gelerek komut satırımızı açıyoruz. Daha sonra aşağıdaki komutu yazıp manifestoların kurulum aşamalarını izliyoruz.
docker-compose up
Eğer container'ımızı detached modda çalıştırmadıysak (yukarıdaki komut attached olarak çalıştırır) aşağıdaki gibi bir çıktı görmemiz gerekiyor.
İşlem tamam, artık uygulamamız ve database sunucumuz docker container'lar üzerinde erişilebilir durumda. Yukarıdaki yazdığımız port numarası ile uygulamamıza erişebiliriz. http://localhost:1337/admin
Volume kullandığımız için uygulamamızın bulunduğu container içindeki dosyalar localimizde de görünür durumda. Herhangi bir değişiklik durumunda live server devreye girip container içindeki uygulamayı da güncelliyor. Son durumda klasör yapısı aşağıdaki gibi olması gerekiyor.
my-strapi-project
├── app
│ └── api
│ └── build
│ └── config
│ └── extensions
│ └── node_modules
│ └── .editorconfig
│ └── .env.example
│ └── .eslintignore
│ └── .eslintrc
│ └── .gitignore
│ └── favicon.ico
│ └── package.json
│ └── .README.md
│ └── yarn.lock
└── data
└── docker-compose.yml
Strapi ilk Bakis
Kurulumu tamamlandı. Strapi ile Postgres'i birlikte container haline getirip uygulamamızı ayağa kaldırdık. Volume ile de uygulama dosyalarını ve veritabanı data'larını localimize taşıdık. Database'i ister MongoDB isterseniz de SQLite yapabilirsiniz. İstediğinize göre de .yml dosyanızdaki parametreleri düzenlemeniz gerekiyor.
Kaynak:
İlişkili Yazılar