문제 상황
Dockerfile을 작성하여 amazon linux 2 이미지에 tomcat 패키지를 다운로드하고 압축 해제하려고 했었다.
이미지를 빌드할 때 tar 명령어를 실행하는 라인에서 에러가 발생하면서 이미지를 빌드할 수 없는 상황이 발생했다.
# Dockerfile
FROM amazonlinux:2
RUN yum install java-17-amazon-corretto -y
RUN mkdir /opt/tomcat
WORKDIR /opt/tomcat
RUN yum install -y tar
ADD https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.98/bin/apache-tomcat-9.0.98.tar.gz .
RUN tar -xvzf apache-tomcat-9.0.98.tar.gz
RUN mv apache-tomcat-9.0.98/* /opt/tomcat
EXPOSE 8080
CMD ["/opt/tomcat/bin/catalina.sh", "run"]
ADD 명령어에 대해서 알아보니 자동으로 압축 파일을 해제해준다고 하길래 tar 명령어 라인을 지워봤지만, 디렉터리를 찾을 수 없다면서 또 에러가 발생하였다...
문제 해결
ADD 명령어는 압축파일을 컨테이너 내로 가져올 때는 자동으로 압축 해제하는 것이 맞지만, 로컬 파일에 대해서만 해당된다고 한다.
외부 URL로 가져오는 패키지의 경우 다운로드만 하게 되는데, 이때문에 꼭 tar 명령을 이용하여 압축을 해제해야 한다.
그리고 또 현재 사용하려는 이미지(amazonlinux:2)에서 tar 명령어가 없기 때문에 에러가 생긴 것이기 때문에 압축 파일을 해제하기 전에 tar 패키지를 설치하는 RUN yum install -y tar 명령어를 추가해줌으로써 해결했다.
다행스럽게도 설치가 아주 잘 됐고 ㅠㅠ 이미지도 생성된 것을 확인할 수 있었다. 정말 다행이다...
정리
- ADD 명령어는 로컬 파일에 존재하는 압축 파일에 대해서만 자동으로 압축을 해제해준다.
- ADD 명령어를 외부 URL을 이용하여 사용할 경우에는 다운로드만 진행한다. → tar 명령어 사용해야 함!
- tar 명령어가 실행되지 않는다면 직접 tar 패키지를 설치해야 한다.
'DevOps' 카테고리의 다른 글
CI/CD 파이프라인 구축하기 - 3.2 (Docker 컨테이너 자동 빌드 및 자동 배포) (0) | 2024.12.13 |
---|---|
CI/CD 파이프라인 구축하기 - 3.1 (Docker 설정 및 Jenkins SSH server 설정하기) (0) | 2024.12.13 |
CI/CD 파이프라인 구축하기 - 2 (Tomcat) (1) | 2024.12.13 |
CI/CD 파이프라인 구축하기 - 1 (Git, Jenkins, Maven(Java)) (3) | 2024.12.04 |
CI/CD란? 개념/주요 단계/장점 (1) | 2024.12.02 |