FROM 플랫폼 지정의 의도 점검

각 빌드 단계의 플랫폼을 실제 대상과 일치시키세요.

설명

FROM의 --platform은 해당 단계에 사용할 운영체제와 아키텍처를 선택합니다. linux/arm64처럼 고정하면 다른 대상용 빌드에서 의도와 다른 플랫폼을 사용하거나 에뮬레이션이 필요할 수 있습니다.

플랫폼 지정 자체가 잘못된 것은 아닙니다. 의도한 교차 컴파일이나 빌드 도구 실행을 위해 $BUILDPLATFORM을 사용하는 구성처럼 필요한 경우도 있습니다.

잠재적 영향

  • 대상과 맞지 않는 바이너리를 만들거나 실행에 실패할 수 있습니다.
  • 불필요한 에뮬레이션으로 빌드가 느려질 수 있습니다.

해결 방법

  • 고정한 플랫폼이 필요한지 확인하고, 대상 플랫폼을 따르는 단계라면 불필요한 FROM --platform 지정을 제거하세요.
  • 빌드의 대상 플랫폼은 buildx --platform 등으로 지정하고 필요한 각 플랫폼에서 결과를 시험하세요. 옵션을 제거하는 것만으로 애플리케이션의 이식성이 보장되지는 않습니다.

예시

두 예제는 단계 플랫폼 선택만 비교합니다. 베이스 이미지와 애플리케이션 의존성도 원하는 플랫폼을 지원해야 합니다.

변경 전

dockerfile
FROM --platform=linux/arm64 node:22-alpine

WORKDIR /app
COPY . .

변경 후

dockerfile
FROM node:22-alpine

WORKDIR /app
COPY . .

설명:

  • 변경 전: 단계 플랫폼을 linux/arm64로 고정합니다. 의도한 ARM64 전용 구성이라면 사용할 수 있습니다.
  • 변경 후: 단계가 빌드의 대상 플랫폼을 따릅니다. 실제 실행 호환성은 별도로 확인해야 합니다.

참조