바인딩 마운트된 컨네이너에서 프로그램 추가된 이미지 만들기 > 도커 & 쿠버네티스

본문 바로가기

[이슈] 바인딩 마운트된 컨네이너에서 프로그램 추가된 이미지 만들기

필기자
2023-11-13 17:18 1,110 0

본문

주의사항 :  내용은 task app 기준 예시이며 본인이 개발한 프로그램 구성에 따라 적용하세요.


20231113170534_1f150c6967b3cada1f1b0bb6ea5a9308_ee94.png

위와 같이 우리가 사용하고 있는 컨테이너는 6개가 있다.
이중 myredis와 myproxy는 이미지를 새롭게 만들 필요가 없다. 
  • myproxy 이용하였으면 설치 가이드만 제공
  • myredis 이용하였으면 설치 가이드만 제공

myfront와 mytaskapi, myuserapi는 각각 -v 옵션으로 바인딩 마운트가되어 있다.

docker run -d --name myfront -p 8011:80 --net php-mysql -v ~/html:/var/www/html myphpimage
docker run -d --name mytaskapi -p 8012:80 --net php-mysql -v ~/php/task:/var/www/html myphpimage
docker run -d --name myuserapi -p 8013:80 --net php-mysql -v ~/php/user:/var/www/html myphpimage


이슈 : 바인딩 마운트된 컨테이너를 commit 하여 새로운 이미지로 만들어도 바인딩 마운트(/var/www/html 빈폴더가 됨)된 내용이 포함되지 않는다.

해결방법 
  • Dockerfile을 만들어 이미지를 빌드하면서 /var/www/html에 개발한 내용을 COPY한다.
  • /home/본인계정/ 폴더 안에서 Dockerfile.myfront 파일 생성 -> 다음 내용 삽입

# Dockerfile.myfront 파일 내용
# 기존 myphpimage 내용 시작
FROM php:8.0-apache

# 필요한 모든 확장을 활성화
RUN apt-get update && \
    apt-get install -y zlib1g-dev libpng-dev && \
    docker-php-ext-install mysqli pdo pdo_mysql gd iconv opcache

# 기존 myphpimage 내용 끝

# Redis 확장 설치 및 활성화 myphpimage 이후 추가 내용
RUN pecl install redis && \
    docker-php-ext-enable redis

# 호스트의 html 폴더를 컨테이너의 /var/www/html에 복사
# COPY시 host의 상대 경로만 허용되며 상위 폴더 접근도 안됨
COPY ./html /var/www/html
  • COPY시 host의 상대 경로만 허용되며 상위 폴더 접근도 안됨
    • 따라서 Dockerfile.myfront 파일을 host의 바인딩 할 폴더 레벨에서 생성 함 
  • docker build -f Dockerfile.myfront -t myfront-kky ./ 
  • 위 명령어로 개발한 프로그램을 넣어서 myfront-kky 이미지로 빌드함.
  • ./는 Dockerfile.myfront 이 있는 상대경로 

20231113172227_1f150c6967b3cada1f1b0bb6ea5a9308_65av.png

20231113172304_1f150c6967b3cada1f1b0bb6ea5a9308_9opr.png

20231113173543_1f150c6967b3cada1f1b0bb6ea5a9308_hama.png


생성된 이미지 확인
20231113173804_1f150c6967b3cada1f1b0bb6ea5a9308_9yvs.png

20231113173837_1f150c6967b3cada1f1b0bb6ea5a9308_nw3g.png

이미지 테스트

#기존 myfront 컨테이너 삭제
docker rm myfront
#바인딩 마운트 내용 제거
docker run -d --name myfront -p 8011:80 --net php-mysql myfront-kky

20231113174021_1f150c6967b3cada1f1b0bb6ea5a9308_anar.png20231113174202_1f150c6967b3cada1f1b0bb6ea5a9308_60gc.png
이후 나머지 이미지도 만들어서 도커 허브에 업로드 후 설치 방법 제공
  • Dockerfile.mytaskapi 파일 생성 후 빌드
  • Dockerfile.myuserapi 파일 생성 후 빌드
  • 파일명은 자유롭게 작성해도 되나 빌드시 -f 옵션에 정확히 삽입

댓글목록0

등록된 댓글이 없습니다.
게시판 전체검색