Sobes.tech
Middle

Docker fayllarının dinamik parametrizasiyası sahəsində təcrübəniz nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Mən mühit dəyişənləri və quruluş arqumentləri istifadə edərək Docker şablon fayllarını hazırlamışam.

Aşağıdakı metodları tətbiq etdim:

  1. ARG göstərişləri quruluş arqumentləri üçün:

    FROM ubuntu:latest
    ARG APP_VERSION
    RUN echo "Quruluş versiyası: $APP_VERSION"
    
  2. ENV göstərişləri işləmə vaxtında mühit dəyişənləri üçün:

    FROM alpine:latest
    ENV PORT=8080
    CMD ["sh", "-c", "port $PORT-də dinləyir"]
    
  3. --build-arg-e istifadə edərək ARG və ENV ötürülməsi:

    docker build --build-arg APP_VERSION=1.2.0 .
    docker run -e PORT=9000 my_image
    
  4. Çox mərhələli quruluşdan istifadə (Multi-stage builds) ilə mərhələlər arasında dəyərlərin ötürülməsi:

    # qurucu mərhələ
    FROM golang:1.20 as builder
    ARG BUILD_TAG
    WORKDIR /app
    RUN go build -ldflags "-X main.version=$BUILD_TAG" -o app .
    
    # son mərhələ
    FROM alpine:latest
    COPY --from=builder /app/app /
    CMD ["/app"]
    
  5. CI/CD sistemləri ilə inteqrasiya (məsələn, GitLab CI, Jenkins) quruluş zamanı və ya konteynerin yerləşdirilməsi zamanı parametrlərin (tətbiq versiyası, mühit, API açarları) avtomatik dəyişdirilməsi üçün.

Bu yanaşma Docker-şəkillərini daha çevik və təkrar istifadə edilə bilən edir, müxtəlif mühitlər və tələblərə uyğunlaşdırmağa imkan verir, Dockerfile-i dəyişdirmədən.