728x90
Docker를 사용하여 애플리케이션을 컨테이너화하면서 exec format error라는 오류에 직면한 적이 있나요? 이 오류는 스크립트나 바이너리 파일의 형식이 컨테이너 내에서 실행되기에 적합하지 않을 때 발생합니다. 여기에서는 이 문제의 원인과 해결 방법에 대해 간략하게 알아보겠습니다.
문제 상황
Dockerfile 내에서 다음과 같은 명령어를 사용하여 AWS 자격 증명을 설정하는 스크립트를 실행하려고 했습니다:
COPY .env .env
COPY set_aws_credentials.sh set_aws_credentials.sh
RUN chmod +x set_aws_credentials.sh && ./set_aws_credentials.sh
제가 현재 운영중인 EC2(Amazon linux2)에서 이미지를 실행하려고 할 떄, exec /usr/local/bin/docker-entrypoint.sh: exec format error라는 오류가 발생했습니다.
해결 방법:
스크립트 실행 부분을 두 단계로 나누어서 문제를 해결했습니다:
1. 스크립트에 실행 권한을 부여합니다.
2. sh 명령어를 사용하여 스크립트를 명시적으로 실행합니다.
3. 이를 Dockerfile에 반영하면 다음과 같습니다:
COPY .env .env
COPY set_aws_credentials.sh set_aws_credentials.sh
RUN chmod +x set_aws_credentials.sh
RUN sh set_aws_credentials.sh
이 변경으로 스크립트는 정상적으로 실행되며 exec format error 오류가 사라졌습니다.
결론
Docker 컨테이너 내에서 스크립트를 실행할 때 발생하는 exec format error 오류는 스크립트의 형식이나 실행 방법에 문제가 있을 때 나타납니다. 이를 해결하기 위해 스크립트의 실행 방식을 명시적으로 지정하거나 스크립트의 형식을 수정하는 것이 좋습니다.
'개발 > CI & CD' 카테고리의 다른 글
ssh config, shell script로 배포 시간 1/10으로 단축하기 (0) | 2024.07.18 |
---|---|
배포 자동화: Go + Docker + ECS + Fargate + ECR + Github Action (0) | 2024.07.17 |