Docker multi stage

2022. 12. 27. 22:52·Infra/Docker
728x90

 

🖤 Dockerfile - 개발용 DB와 운영용 DB 분리

  • 도커의 또 다른 장점 중 하나로, 똑같이 생긴 컨테이너를 여러 개 띄우는 것이 간단
  • 개발용 DB와 운영용 DB는 데이터만 다르지 테이블과 schema는 똑같이 생김
  • 똑같은 Dockerfile에서 이미지를 빌드하고, 이 이미지로부터 컨테이너를 여러 개 만들면 됨
services:  
  django:    
   build:      
    context: .      
    dockerfile: ./compose/django/Dockerfile-dev

context는 docker build 명령을 실행할 디렉터리 경로라고 보시면 됩니다.

dockerfile에는 ‘개발용’ 도커 이미지를 빌드하는 데 사용할 Dockerfile을 지정하면 됩니다.
Dockerfile-dev 파일에서는 (운영용 Dockerfile과는 달리) 소스코드를 컨테이너에 넣지 않습니다.

 

더보기
https://www.44bits.io/ko/post/almost-perfect-development-environment-with-docker-and-docker-compose

 

개발 서버에 필요 없는 내용은 지우고, 개발 서버에만 필요한 내용은 추가

./compose/django/Dockerfile-dev 파일

FROM python:3

RUN apt-get update && apt-get -y install 
    libpq-dev

WORKDIR /app
ADD    ./requirements.txt   /app/
RUN    pip install -r requirements.txt

# ADD    ./djangosample   /app/djangosample/
# ADD    ./manage.py      /app/

# CMD ["python", "manage.py", "runserver", "0:8000"]
  • 주석으로 처리한 부분들은 원래 Dockerfile에는 있었지만 개발 서버용 도커 이미지에서 삭제한 내용

 

🖤 Docker Multi Stage Build

  • 여러 개의 FROM 명령문, 빌드 시작점에 FROM으로 각각 다른 기초가 되는 베이스 라인을 가져오고 최종 이미지를 만듬
  • 하나의 Dockerfile로 빌드 이미지와 실행 이미지를 분리, 간편하게 이미지를 줄일 수 있음
  • ➡️배포 이미지의 용량이 줄어 빌드 시간이 감소
  • The Multi Staging feature in this new version helps you build optimized and small docker images.
  • We can optimize the size of the container by not copying all the files.
  • .dockerignore file containing
FROM golang:1.16 AS builder
WORKDIR /go/src/github.com/alexellis/href-counter/
RUN go get -d -v golang.org/x/net/html  
COPY app.go    ./
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

FROM alpine:latest  
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/github.com/alexellis/href-counter/app ./
CMD ["./app"]

 

 

 

 

728x90
'Infra/Docker' 카테고리의 다른 글
  • 도커 이미지 빌드 및 배포
  • 기본명령어/Compose
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (461) N
      • AI (1) N
      • Infra (13) N
        • Architecture (2)
        • Kubernetes (5)
        • Docker (3)
        • Cloud (1)
        • DevOps (1)
        • Monitoring (1) N
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Spring (19)
      • JPA (4)
      • Language (9) N
        • Kotlin (1) N
        • Java (8)
      • Git (4)
      • DB (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    재귀
    최대공약수
    큐
    BFS
    프로그래머스
    월간코드챌린지
    힙
    그래프
    최단거리
    DFS
    정렬
    알고리즘
    파이썬
    자료구조
    동적계획법
    트리
    이분탐색
    덱
    스택
    다익스트라
    Algorithm
    조합
    백준
    플로이드워셜
    최소신장트리
    그리디
    DP
    구현
    구간합
    LIS
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
Docker multi stage
상단으로

티스토리툴바