Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 완전탐색
- 검색어 추천
- docker
- 레디스 동시성
- jwt 표준
- branch 전략
- 구현
- piplining
- 셀러리
- 디버깅
- 쿠키
- 프로그래머스
- BFS
- 카카오
- 알람 시스템
- 이분탐색
- 숫자 블록
- 코드 계약
- 결제서비스
- 좋은 코드 나쁜 코드
- AWS
- gRPC
- 깊게 생각해보기
- 백준
- 객체지향패러다임
- 트랜잭샨
- 수신자 대상 다르게
- prg 패턴
- 누적합
- spring event
Archives
- Today
- Total
코딩관계론
[Docker] --no-cache가 시간을 잡아 먹는다 본문
반응형
1. 문제 상황
프로젝트가 example 도커 이미지를 빌드하기 위해선 기반 파일인 src 파일을 빌드해야 한다. example 코드를 수정하던 중에
src 코드 수정이 필요하다면 src 파일을 --no-cache로 빌드했다. src의 환경이 변하는 것이 아니라 코드만 변했을 뿐인데 기존 pkg를 다운하고 다시 설치하는 것은 불필요한 시간을 잡아먹고 있었다.
FROM nvcr.io/nvidia/l4t-base:r32.6.1
# Keeps Python from generating .pyc files in the container
ENV PYTHONDONTWRITEBYTECODE=1
# Turns off buffering for easier container logging
ENV PYTHONUNBUFFERED=1
ARG DEBIAN_FRONTEND=noninteractive
RUN apt-get update && \
apt-get install -y \
bluetooth \
libbluetooth-dev \
libsm6 \
libglib2.0-0 \
libxrender1 \
libxext6 \
python3-pip \
python3-dev \
build-essential \
lm-sensors \
iputils-ping
# install required python packages
COPY to_install/ .
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install pip==21.3.1 setuptools==57.5.0 wheel==0.37.1
RUN python3 -m pip install -r docker-requirements.txt --find-links .
WORKDIR /app
#이 부분만 --no-cache로 빌드하면 된다
COPY ./surveillance-sdk/src /app/surveillance-sdk/src
COPY ./surveillance-sdk/setup.cfg /app/surveillance-sdk/setup.cfg
COPY ./surveillance-sdk/setup.py /app/surveillance-sdk/setup.py
RUN cd surveillance-sdk && python3 setup.py install
ENV OPENBLAS_CORETYPE=ARMV8
ENV LANG en_US.UTF-8
2. 도커 캐싱 여부 판단 방법
도커에서는 ADD와 COPY에 대한 명령문들을 그대로 캐싱한다고 한다. 해당 명령어의 캐싱 여부는 checksum을 이용해 검사하는데 파일의 수정 일자, 마지막 접근 일자 등은 checksum에 영향을 주지 못한다.
3.해결방법
해결방법은 ARG CACHEBUST=1을 도커 파일에 추가하면 된다. 해당 명령어 밑으로는 --no-cache로 빌드가 진행됨
해당 명령어를 추가하기 전엔 아래의 사진처럼 cache를 사용해 빌드를 진행했다.
하지만 해당 명령어를 사용하면 아래처럼 cache를 사용하지 않고 다시 빌드하는 모습을 볼 수 있다.
반응형
'개발 > SPOT' 카테고리의 다른 글
사용자의 Custom 설정을 지원하는 비동기 프로그램(feat.Celery) (0) | 2023.04.19 |
---|---|
Celery필요성과 개념 (0) | 2023.04.18 |
미션별로 수신 대상자가 달라지는 SMS 기능 개발 (0) | 2023.04.06 |
그래프 기반으로 작성한 상태천이 프로그램 (0) | 2023.04.05 |
[SPOT] RMS(Remote Mission Service)가 너무 늦게 끝나요... Thread 문제인가요? (0) | 2022.10.10 |