Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Container Apps express'e dağıtmadan önce kapsayıcınızı yerel olarak derleyebilir ve test edebilirsiniz. Bu makalede görüntü oluşturma, Docker veya Docker Compose ile yerel olarak çalıştırma, kayıt defterine gönderme ve dağıtımı doğrulama işlemi gösterilmektedir.
Note
Komutları çalıştırmadan önce kod listesinde yer tutucuları değerlerinizle değiştirin. Örneğin, gibi <CONTAINER_APP_NAME> bir metni kapsayıcı uygulamanızın adıyla değiştirin.
Prerequisites
Express uygulamanızı yerel olarak çalıştırmak için aşağıdaki öğeler gereklidir:
- Docker Desktop veya yerel olarak yüklenmiş uyumlu bir kapsayıcı çalışma zamanı.
- Azure Container Apps express’in çekebileceği bir kapsayıcı kayıt defterine erişim.
- Azure CLI yükleme ve dağıtım doğrulaması için oturum açma.
Yerel geliştirme iş akışı
Azure Container Apps express standart Open Container Initiative (OCI) kapsayıcılarını çalıştırdığından yerel geliştirme iş akışınız şu işlemi izler:
- Uygulamanızı kodlayın
- Konteyneri oluşturun
- Yerel olarak test et
- Kayıt defterine gönderme
- Container Apps Express'e dağıtın
Özel SDK, CLI veya yapılandırma biçimi gerekmez. Uygulamanız yerel olarak bir kapsayıcıda çalışıyorsa Azure Container Apps express üzerinde çalışır.
Konteyner imajınızı oluşturun
Uygulamanızın, Azure Container Apps express’in çalıştırabileceği bir kapsayıcı görüntüsü oluşturmak için bir Dockerfile’a ve derleme adımına ihtiyacı vardır.
Bu Dockerfile, bir HTTP bağlantı noktasını dinleyen bir kapsayıcı imajı oluşturur. Bağlantı noktasını 3000dinleyen örnek bir Docker dosyası aşağıda verilmiştir.
FROM node:22-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
Yerel yapılandırma birkaç belirli ayar gerektirir. Uygulamanız şu şekilde olmalıdır:
- Tek bir HTTP bağlantı noktasını (Azure Container Apps express'te
targetPortolarak yapılandırdığınız bağlantı noktası) dinleyin. - İdeal olarak 5 saniyeden kısa sürede hızlı bir şekilde başlayın.
- Günlükleri
stdoutvestderrkonumlarına yazın. Azure Container Apps express bu akışları otomatik olarak yakalar.
Görüntü oluşturma
Komutunu kullanarak docker build Dockerfile'ınızdan yerel bir görüntü oluşturun.
docker build -t <CONTAINER_APP_NAME>:dev .
Docker ile yerel olarak test edin
Dağıtmadan önce çalıştığını doğrulamak için kapsayıcı görüntünüzü Docker ile yerel olarak çalıştırın.
Kapsayıcınızı aşağıdaki komutla çalıştırın:
docker run -d \
-p 8080:3000 \
-e DATABASE_URL="postgres://localhost:5432/mydb" \
-e LOG_LEVEL="debug" \
--name <CONTAINER_APP_NAME> \
<CONTAINER_APP_NAME>:dev
Ardından sistem durumu uç noktasını ve uygulamanın kendisini isteyerek uygulamanın çalışıp çalışmadığını denetleyin.
curl http://localhost:8080/health
curl http://localhost:8080/
Kapsayıcı günlüklerini görüntüleme
Kapsayıcınızın çıktısını gerçek zamanlı olarak aktarmak için docker logs kullanın.
docker logs -f <CONTAINER_APP_NAME>
Dur ve temizle
Testi tamamladığınızda yerel kaynakları boşaltmak için kapsayıcıyı durdurun ve kaldırın.
docker stop <CONTAINER_APP_NAME> && docker rm <CONTAINER_APP_NAME>
Ortam eşdeğerliği
Azure Container Apps express çalışma zamanını yerel olarak eşleştirmek için aşağıdaki yapılandırmayı doğrulayın:
| Aspect | Local | Container Apps express |
|---|---|---|
| Bağlantı noktası bağlama | -p 8080:3000 |
targetPort: 3000 |
| Ortam değişkenleri | -e KEY=value |
Kapsayıcı uygulaması ortam değişkenleri |
| Secrets | -e SECRET=value |
Kapsayıcı uygulama gizlilik bilgileri |
| CPU/bellek | Docker kaynak sınırları | CPU/bellek ayırma |
Kaynak sınırlarının benzetimini gerçekleştirme
docker run komutunu kullanarak Azure Container Apps express kaynak kısıtlamalarını yerel olarak taklit edin.
docker run -d \
--cpus="0.5" \
--memory="1g" \
-p 8080:3000 \
<CONTAINER_APP_NAME>:dev
Docker Compose ile test edin
Veritabanları ve önbellekler gibi yerel bağımlılıkları olan uygulamalar için Docker Compose'u kullanın:
# docker-compose.yml
services:
app:
build: .
ports:
- "8080:3000"
environment:
- DATABASE_URL=postgres://postgres:password@db:5432/mydb
- REDIS_URL=redis://cache:6379
depends_on:
- db
- cache
db:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
ports:
- "5432:5432"
cache:
image: redis:7-alpine
ports:
- "6379:6379"
docker compose up Oluştur dosyanızda tanımlanan tüm hizmetleri derlemek ve başlatmak için komutunu kullanın.
docker compose up --build
Note
Azure Container Apps express'te veritabanları ve önbellekler gibi dış bağımlılıklarınızı ayrı ayrı Azure hizmetler olarak barındırmanız veya genel uç noktalar aracılığıyla erişilebilir hale getirmeniz gerekir. Azure Container Apps express yerleşik yönetilen veritabanları veya önbellekler sağlamaz.
Kapsayıcı kayıt deposuna gönderme
Görüntünüzün yerel olarak çalıştığını doğruladıktan sonra, Azure Container Apps express'in çekebileceği bir kayıt defterine gönderin.
Azure Container Registry (Azure Konteyner Kayıt Defteri)
Azure Container Registry (ACR) üzerinde kayıt defterinizde oturum açın, görüntüyü etiketleyin ve gönderin.
# Log in to ACR
az acr login --name <REGISTRY_NAME>
# Tag for ACR
docker tag <CONTAINER_APP_NAME>:dev <REGISTRY_NAME>.azurecr.io/<CONTAINER_APP_NAME>:v1
# Push
docker push <REGISTRY_NAME>.azurecr.io/<CONTAINER_APP_NAME>:v1
Docker Hub
Resminizi etiketleyip Docker Hub gönderme.
docker tag <CONTAINER_APP_NAME>:dev mydockerhub/<CONTAINER_APP_NAME>:v1
docker push mydockerhub/<CONTAINER_APP_NAME>:v1
GitHub Container Kayıt Defteri
Görüntünüzü etiketleyin ve GitHub Container Registry'ye gönderin.
docker tag <CONTAINER_APP_NAME>:dev ghcr.io/<ORGANIZATION_NAME>/<CONTAINER_APP_NAME>:v1
docker push ghcr.io/<ORGANIZATION_NAME>/<CONTAINER_APP_NAME>:v1
Dağıtımı test et
Görüntüyü gönderdikten sonra Azure Container Apps express'e dağıtın ve dağıtımı denetleyin.
# Deploy
az containerapp update \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--image <REGISTRY_NAME>.azurecr.io/<CONTAINER_APP_NAME>:v1
# Get the URL
az containerapp show \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--query properties.configuration.ingress.fqdn \
--output tsv
# Check the endpoint
curl https://<APP_URL>/health
Geliştirme ipuçları
Aşağıdaki ipuçları, Azure Container Apps express için derleme yaparken geliştirme iş akışınızı kolaylaştırmanıza yardımcı olur.
ACR ile hızlı yineleme döngüsü kullanma
Hızlı geliştirme için, görüntüleri yerel olarak çekmeden veya göndermeden bulutta görüntü oluşturmak için kullanın az acr build .
az acr build \
--registry <REGISTRY_NAME> \
--image <CONTAINER_APP_NAME>:latest \
.
Ardından uygulamanızı güncelleştirin:
az containerapp update \
--name <CONTAINER_APP_NAME> \
--resource-group <RESOURCE_GROUP_NAME> \
--image <REGISTRY_NAME>.azurecr.io/<CONTAINER_APP_NAME>:latest
Kayıt tutma en iyi uygulamalarını izleyin
Log Analytics daha kolay sorgulamak için stdout'a yapılandırılmış JSON günlükleri yazın:
// Node.js example
console.log(JSON.stringify({
level: "info",
message: "Request handled",
method: "GET",
path: "/api/users",
duration_ms: 23,
status: 200
}));
SIGTERM ile düzgün kapatmayı yönetin
Aşamalı güncellemeler sırasında düzgün kapatmalar için SIGTERM işleme:
process.on('SIGTERM', () => {
console.log('SIGTERM received, shutting down gracefully');
server.close(() => {
process.exit(0);
});
});