Oxcart İndir
Menü

Mac'te Azure Container Apps ve AKS için yerel geliştirme

Dağıtımdan önce Azure iş yüklerinden hızlı geri bildirim alın: uygulamanızın imajlarını Mac'te Docker Compose ile çalıştırın, Azure Storage için Azurite kullanın, hazır olduğunuzda Azure Container Registry'ye gönderin. Oxcart yerel servislerinizi ve Rosetta üzerinden amd64 Azure Functions imajlarını çalıştırırken kubectl ve k9s Mac'inizi AKS'ye bağlar.

Güncelleme

Ne nerede çalışır

Azure konteyner servisleri ve Oxcart'taki yerel karşılıkları
Azure servisiYerel karşılıkYerel iş akışınız
Container AppsUygulamanın imajlarıyla Docker ComposeServislerinizi sağlık denetimleri ve yayınlanan portlarla birlikte çalıştırın
Blob StorageAzurite10000 portunda yerel Blob Storage kullanın
Azure Functions (konteyner)Functions temel imajıamd64 Functions imajını Rosetta üzerinden çalıştırın
AKSAKS'ye karşı kubectl ve k9s; yerel API için kwokYerelde 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

  1. 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.
  2. 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.
  3. Gereken yerde amd64 sabitleyin. Azure Functions temel imajları gibi arm64 derlemesi olmayan servislerde platform: linux/amd64 ayarlayın. Rosetta üzerinden çalışırlar.
  4. 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.
  5. Test edin, sonra gönderin. Uygulamayı localhost üzerinden çağırın. Çalıştığında az acr login --name REGISTRY ile oturum açın, imajı etiketleyin ve Container Apps veya AKS için docker push ile 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ü.

Oxcart'ı kendi projelerinizde deneyin

60 gün ücretsiz. Ardından kullanıcı ve ana sürüm başına $20: abonelik değil.

Apple silicon · macOS 26 veya üzeri

Sıradaki yazı

Sürüm notları

Oxcart 0.1.4

En yeni sürüm

Lisanslama ve iyileştirmeler.

  • E-postayla gönderilen güvenli bağlantı üzerinden lisans etkinleştirme.
  • Settings üzerinden lisans ve Mac yönetimi.
  • Çevrimdışı lisans doğrulama.
  • Performans iyileştirmeleri, arayüz düzenlemeleri ve hata düzeltmeleri.

macOS 26.0 veya üzeri gerekir

Oxcart 0.1.3

Boştayken belleği geri kazanma.

  • Çalışan konteyner olmadığında VM belleğini serbest bırakır.
  • Konteynerları, imajları, birimleri ve ağları korur.

macOS 26.0 veya üzeri gerekir

Oxcart 0.1.2

Komut satırı araçlarıyla entegrasyon.

  • Oxcart’la birlikte gelen Docker araçları ile mevcut kurulum arasında geçiş yapın.
  • Arayüz düzenlemeleri.

macOS 26.0 veya üzeri gerekir

Oxcart 0.1.1

Uygulamayla gelen Docker araçları ve ajan kontrolleri.

  • Docker CLI 29.9, Compose 5.6 ve Buildx 0.38 dahildir.
  • Docker bağlamı entegrasyonu ve kimlik bilgilerinin Anahtar Zinciri’nde güvenli saklanması.
  • Ajan başına izin ve engelleme seçenekleriyle MCP ajan bağlantıları.

macOS 26.0 veya üzeri gerekir

Oxcart 0.1.0

Apple silicon için Docker uyumlu konteynerlar.

  • Docker CLI, Compose ve Buildx uyumluluğu.
  • Uygulamayla gelen çalışma zamanı bileşenleriyle çevrimdışı kurulum.
  • Projeye ve Git dalına göre düzenlenmiş portlar.
  • Varsayılan olarak salt okunur erişimle MCP entegrasyonu.
  • Doğrulanan otomatik güncellemeler.

macOS 26.0 veya üzeri gerekir