Sobes.tech
Middle

Docker dosyalarının dinamik parametreleştirilmesi konusunda deneyiminiz nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Ortam değişkenleri ve derleme argümanları kullanarak Docker şablon dosyaları geliştirdim.

Aşağıdaki yöntemleri uyguladım:

  1. ARG talimatları ile derleme argümanları:

    FROM ubuntu:latest
    ARG APP_VERSION
    RUN echo "Derleme sürümü: $APP_VERSION"
    
  2. ENV talimatları ile çalışma zamanında ortam değişkenleri:

    FROM alpine:latest
    ENV PORT=8080
    CMD ["sh", "-c", "port $PORT üzerinde dinliyor"]
    
  3. --build-arg ve -e kullanarak ARG ve ENV geçişi:

    docker build --build-arg APP_VERSION=1.2.0 .
    docker run -e PORT=9000 my_image
    
  4. Çok aşamalı derleme kullanımı (Multi-stage builds) ile aşamalar arasında değer aktarımı:

    # derleyici aşaması
    FROM golang:1.20 as builder
    ARG BUILD_TAG
    WORKDIR /app
    RUN go build -ldflags "-X main.version=$BUILD_TAG" -o app .
    
    # son aşama
    FROM alpine:latest
    COPY --from=builder /app/app /
    CMD ["/app"]
    
  5. CI/CD sistemleri ile entegrasyon (örneğin, GitLab CI, Jenkins) derleme sırasında veya konteyner dağıtımı sırasında uygulama sürümü, ortam ve API anahtarları gibi parametrelerin otomatik olarak yer değiştirmesini sağlar.

Bu yaklaşım, farklı ortamlar ve gereksinimler için daha esnek ve yeniden kullanılabilir Docker imajları oluşturmaya olanak tanır, Dockerfile'ı değiştirmeden.