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과는 달리) 소스코드를 컨테이너에 넣지 않습니다.
개발 서버에 필요 없는 내용은 지우고, 개발 서버에만 필요한 내용은 추가
./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