Ne nerede çalışır
| Azure servisi | Yerel karşılık | Yerel iş akışınız |
|---|---|---|
| Container Apps | Uygulamanın imajlarıyla Docker Compose | Servislerinizi sağlık denetimleri ve yayınlanan portlarla birlikte çalıştırın |
| Blob Storage | Azurite | 10000 portunda yerel Blob Storage kullanın |
| Azure Functions (konteyner) | Functions temel imajı | amd64 Functions imajını Rosetta üzerinden çalıştırın |
| AKS | AKS'ye karşı kubectl ve k9s; yerel API için kwok | Yerelde derleyip test edin, ardından kümenizle kubectl ve k9s kullanın |
Container Apps: simülatörü değil konteynerleri test edin
Container App; ortam değişkenleri, gizli bilgiler, giriş portu, problar ve ölçekleme kurallarıyla bir veya daha fazla konteyner çalıştırır. Bozulan kısım konteynerlerdir; aynı imajı çalıştırdığınızda Mac'te Azure'daki gibi davranırlar. Ölçekleme kuralları, revizyonlar ve yönetilen kimlik Azure'da kalır; konteynerin içindeki her şeyi yerelde test edebilirsiniz.
Azure Container App konteynerlerini Compose ve Azurite ile yerelde çalıştırın
- Uygulamayı Compose'da tanımlayın. Container App'inizdeki her konteyner (ana konteyner ve sidecar'lar) için aynı imajlar, ortam değişkenleri, giriş portu ve sağlık problarıyla bir Compose servisi yazın.
- Depolama için Azurite ekleyin.
mcr.microsoft.com/azure-storage/azuriteüzerinden 10000 (Blob), 10001 (Queue) ve 10002 (Table) portlarını yayınlayan servis ekleyin; uygulamanın depolama bağlantı dizesini ona yönlendirin. - Gereken yerde amd64 sabitleyin. Azure Functions temel imajları gibi arm64 derlemesi olmayan servislerde
platform: linux/amd64ayarlayın. Rosetta üzerinden çalışırlar. - Başlatın ve bekleyin.
docker compose up -d --waitçalıştırın. Sağlık denetimli tüm servisler sağlıklı olduğunda döner. - Test edin, sonra gönderin. Uygulamayı
localhostüzerinden çağırın. Çalıştığındaaz acr login --name REGISTRYile oturum açın, imajı etiketleyin ve Container Apps veya AKS içindocker pushile gönderin.
services:
web:
image: myregistry.azurecr.io/web:2.1.0
environment:
AZURE_STORAGE_CONNECTION_STRING: >-
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=REPLACE_WITH_AZURITE_DEV_KEY;BlobEndpoint=http://azurite:10000/devstoreaccount1;
ports: ["8080:8080"]
depends_on: [azurite]
azurite:
image: mcr.microsoft.com/azure-storage/azurite
ports: ["10000:10000", "10001:10001", "10002:10002"] Azurite'ın bilinen geliştirme hesabı anahtarı Microsoft'un Azurite belgelerindedir; oradan kopyalayın. Compose ağı içinde uygulama Azurite'a servis adıyla (azurite:10000), Mac'inizden ise localhost:10000 üzerinden erişir.
Oxcart'ta Azurite
Azurite, Microsoft'un açık kaynaklı Azure Storage emülatörüdür; 10000–10002 portlarında Blob, Queue ve Table (Table önizlemede) sunar. Blob servisini başlatıp Mac'ten çağırdık:
docker run -d -p 10000:10000 mcr.microsoft.com/azure-storage/azurite \
azurite-blob --blobHost 0.0.0.0
curl -i "http://127.0.0.1:10000/devstoreaccount1?comp=list"
# 403 AuthorizationFailure, Server: Azurite-Blob/3.37.0 (expected for an unsigned request) 403, imzasız isteğe doğru yanıttır: uç nokta çalışıyor ve erişilebiliyor. SDK'nız geliştirme bağlantı dizesiyle isteklerini imzalar.
Konteynerde Azure Functions
Test ettiğimiz Azure Functions temel imajları yalnızca amd64 derlemesi sunar; Apple silicon Mac'te normal derleme “no match for platform in manifest” ile başarısız olur. linux/amd64 olarak derleyip çalıştırın; Oxcart Rosetta kullanır:
# Dockerfile
FROM mcr.microsoft.com/azure-functions/python:4-python3.12
ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
AzureFunctionsJobHost__Logging__Console__IsEnabled=true \
AzureWebJobsFeatureFlags=EnableWorkerIndexing
COPY . /home/site/wwwroot
docker build --platform linux/amd64 -t my-func .
docker run -d --platform linux/amd64 -p 7071:80 my-func
curl localhost:7071/api/hello Çalıştırmamızda HTTP tetiklemeli işlev, docker run sonrasında yaklaşık 13 saniyede x86_64 üzerinden yanıt verdi; Functions host logu rotanın eşlendiğini ve çağrının başarılı olduğunu gösterdi. docker run için de --platform linux/amd64 geçin: yerelde derlenen yalnızca amd64 imajı ancak platform verildiğinde bulunur. Azure Functions Core Tools aynı imajı func azurecontainerapps deploy veya func kubernetes deploy ile dağıtabilir.
Azure Container Registry'ye gönderin
az acr login --name myregistry
docker buildx build --platform linux/amd64 --load -t myregistry.azurecr.io/web:2.1.0 .
docker push myregistry.azurecr.io/web:2.1.0 Container Apps ortamınızın veya AKS düğüm havuzunuzun mimarisi için derleyin. Oxcart'tan çok platformlu imaj gönderimi desteklenmez; mimari başına etiket gönderin veya çok mimarili manifestleri CI üzerinden yayınlayın.
Mac'inizden AKS
az aks get-credentials --resource-group RG --name CLUSTER, macOS'tan kubectl ve k9s kullanabilmeniz için AKS'yi kubeconfig'inize ekler. Servislerinizi Oxcart ile yerelde geliştirin ve aynı imajları AKS'ye dağıtın. Yerel API ve controller testleri için kwok, Oxcart'ta gerçek kontrol düzlemi ve simüle edilmiş düğümlerle çalışır. Bu akışlar için Mac'te Kubernetes rehberine bakın.
Neden Oxcart'ta çalıştırmalı
Yerel test ancak döngü kısaysa kazanç sağlar. Oxcart, docker run --rm için 42 ms, 20 konteyneri durdurup kaldırmak için 77 ms ölçüldü; test ettiğimiz üç çalışma zamanı arasında en hızlısıydı. Konteynerlerin dış bağlantılarını Mac'iniz açar; Azure ağınıza VPN veya özel uç nokta rotası bunlara da uygulanır. Mac'te konteyner ağları rehberine bakın.
Sorular
Azure Container Apps için yerel emülatör var mı?
Ekim 2026 itibarıyla Microsoft belgelerinde resmi yerel Container Apps emülatörü bulamadık; Microsoft yerel kaynaktan dağıtım için az containerapp up, yerel orkestrasyon için Aspire'a yönlendiriyor. Container App bir konteyner grubudur; pratik yerel karşılık, depolama için Azurite ile Compose projesindeki aynı konteynerlerdir.
Azurite Apple silicon Mac'te çalışır mı?
Evet. Oxcart'ta docker run -d -p 10000:10000 mcr.microsoft.com/azure-storage/azurite azurite-blob --blobHost 0.0.0.0, Azurite 3.37.0'ı başlattı ve Blob uç noktası localhost:10000 üzerinde yanıt verdi.
Mac'te konteyner içinde Azure Functions çalıştırabilir miyim?
Evet, --platform linux/amd64 ile. Test ettiğimiz Azure Functions Python temel imajının (mcr.microsoft.com/azure-functions/python:4-python3.12) arm64 derlemesi yok; normal derleme “no match for platform in manifest” ile başarısız olur. Oxcart'ta linux/amd64 olarak derlenip çalıştırıldığında Rosetta üzerinden çalıştı ve HTTP tetiklemeli işlev localhost'ta yanıt verdi.
Mac'ten Azure Container Registry'ye nasıl gönderirim?
az acr login --name REGISTRY, ardından docker tag ve docker push REGISTRY.azurecr.io/app:TAG çalıştırın. Oxcart'ta docker login ile saklanan kimlik bilgileri macOS Anahtar Zinciri'ne gider.
Mac'imde AKS için nasıl geliştiririm?
Oxcart ile uygulamanızı ve bağımlılıklarını yerelde derleyip test edin. kubectl ve k9s'i az aks get-credentials ile AKS'ye bağlayın; manifestleri simüle edilmiş düğümlü yerel Kubernetes API'a karşı denetlemek için Oxcart'ta kwok kullanın. Mac'te Kubernetes rehberine bakın.
Cosmos DB emülatörü ne olacak?
Microsoft, Linux tabanlı Cosmos DB emülatör imajı yayımlar (vNext, API for NoSQL). Oxcart'ta test etmedik; güvenmeden önce ücretsiz deneme sırasında projenizde deneyin.
Kaynaklar ve yöntem
- Örnekler Oxcart 0.1.2, Mac17,14, macOS 27.2 ile 2026-10-10 tarihinde test edildi (Azurite 3.37.0 Blob, linux/amd64 olarak Azure Functions Python 4 imajı, Compose).
- Azurite: https://learn.microsoft.com/en-us/azure/storage/common/storage-use-azurite. Azure Functions Core Tools: https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local. Container Apps (yerel emülatör bulunamadı): https://learn.microsoft.com/en-us/azure/container-apps/quickstart-code-to-cloud. Cosmos DB Linux emülatörü: https://learn.microsoft.com/en-us/azure/cosmos-db/emulator-linux. Kontrol tarihi 2026-10-10.
- Konteyner hızı: Oxcart 0.1.2, 2026-10-10, Apple M5 Max, 8 CPU ve 12 GiB, beş örneğin medyanları; diğer çalışma zamanları aynı günün daha erken saatlerinde, aynı Mac ve test düzeneğinde docker 29.4 istemcisiyle ölçüldü.