728x90
배포 스크립트와 크론탭을 사용해서 gitlab의 pipeline이 build가 완료 되면 자동으로 빌드하게 되는 명령어를 구성했었다.
repository를 새롭게 pull할때마다 docker image가 계속해서 추가되는 현상이 발생한다.
왜 삭제를 자동화 시켜야하는가?
이 때, 동일한 태그를 가진 이미지가 생성이 되면, 기존 이미지는 삭제되는 것이 아니라 tag가 None으로 바뀐 후 계속 남아있게 된다.
위와 같은 상황이 계속해서 발생하게 되면 메모리를 엄청나게 차지하지 않겠나.
찾아보니 다음과 같은 도커 명령어를 사용하면 tag가 none인 이미지들만 삭제할 수 있다고 한다.
docker rmi $(docker images -f "dangling=true" -q)
해당 명령어를 기존의 배포 스크립트에 추가 작성하여 함께 돌려주게 되면, 빌드 후 버려지는 이미지를 자동으로 삭제할 수 있다.
#!/bin/bash
set -ex
docker pull registry.gitlab.com/chordpli/finalproject_kimjunho_team3:latest | grep "Image is up to date" && pull_status="already_pulled" || pull_status="newly_pulled"
echo $pull_status
if [ "$pull_status" = "newly_pulled" ]; then
docker stop project
docker rm -f project
docker run -p 8080:8088 --name project -e SPRING_DATASOURCE_URL=jdbc:mysql://ec2-3-37-127-126.ap-northeast-2.compute.amazonaws.com/sns -e SPRING_DATASOURCE_PASSWORD=project registry.gitlab.com/chordpli/finalproject_kimjunho_team3
fi
docker rmi $(docker images -f "dangling=true" -q)
이제 배포후 버려지는 이미지를 깔끔하게 처리할 수 있게 되었다.
참조
반응형
'Server > Infra' 카테고리의 다른 글
[AWS S3] 이미지 업로드/삭제 테스트 (0) | 2023.01.26 |
---|---|
[AWS S3] 버킷 생성 (0) | 2023.01.26 |
[CI/CD] 배포 스크립트 작성, 크론탭을 활용해서 자동 배포 (0) | 2022.12.20 |
[CI/CD] GitLab CI/CD 후 Docker에서 띄우기 (0) | 2022.12.20 |
[AWS] EC2 접속하기 (0) | 2022.12.20 |