본문 바로가기
Commands/docker

docker / docker-compose.yml 최종 정리

by 꼰대코더 2023. 12. 14.

개발 PC

  • 하나의 프로젝트에 복수의 서브 어플리케이션의 폴더를 두고 개발
  • 각 서브 어플리케이션 폴더에는 Dockerfile 가 존재
  • 프로젝트 폴더하에 서브 폴더들 안의 Dockerfile 를 제어하는 1개의 docker-compose.yml 를 작성 
  • docker-compose.yml 를 이용하여 개발 PC내에서의 동작을 확인
동작 명령어 결과
이미지 빌드 docker-compose build docker-compose.yml 내의 각 서비스하의 build 설정을 이용하여 이미지를 빌드
개별 docker build 를 한꺼번에 수행
※ 서비스만 정의되고 Dockerfile 이 없는 경우는
docker-compose up 시에 docker-hub로부터 이미지를 다운로드 함.
칵오프 docker-compose up -d 생성된 이미지를 container 를 생성하여 docker-compose 내의  각 서비스하의 설정 옵션을 적용하여 시작
개별 docker run 를 한꺼번에 수행
※ -d   는 별도 shell 에서 실행시켜 다음 명령어를 실행가능
셧다운 docker-compose down 킥오프된 container 들을 stop 시키고 contiainer 들을 삭제
개별 docker stop -> docker rm 를 한꺼번에 수행
이미지 모두 삭제 docker image prune -a 위에서 작업한 image 를 버리고 새로 만들어야 할 경우
※ 개별적으로 선택해서 지우는 방법
     docker rmi [image id]
  • 정상 동작을 확인하였다면 아래와 같이 image 들을 압축파일로 생성하여 USB 또는 클라우드서버에 저장
동작 명령어
생성된 이미지들을 리스트 docker images
결과 예)
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
yaho/web           1.0       d3e7f2099862   7 seconds ago   62.6
압축파일 생성 docker save -o yaho_web_image.tar  yaho/web
※Dockerfile이없는 서비스, 즉 docker-hub에서 다운로드하는 경우는 굳이 만들필요없음.
  • 서버에서 사용할 docker-compose.yml 작성하여 USB 또는 클라우드서버에 저장
개발 PC에서 사용한 docker-compose.yml 을 복사 ⇒ build 부분을 삭제
   ※ 서비스할 서버에서는 개발환경을 셋업할 이유와 소스코드를 두어서 오픈할 이유가 없다.
   ※ 이러한 연유로 개발 PC에서 이미지를 생성하여 그 이미지만 릴리스하면 그만이다. 

서비스 서버

동작 명령어 결과
설치전 클린 docker system prune -a --volumes 모든 정지된 containers, images,
networks, volumes 를 삭제
이미지 저장 docker load -i yaho_web_image.tar 압축된 이미지를 풀어서 repository에
저장
 서비스 킥오프 docker-compose up -d 이미지들을 container화해서 서비스개시
※ build가 제거된 docker-compose.yml
    을 사용.
Dockerfile이 없는 서비스는
    맨처음1번만 docker-hub로 부터
     이미지를 다운로드
※ 한번 up 된 서비스들은 서버를 리부팅하여도 자동으로 개시된다.
실행중 로그보기 docker-compose logs -f 서비스명 서비스명은 docker-compose 에 정의된 이름이다.

 

'Commands > docker' 카테고리의 다른 글

docker-compose 개발 결과물을 서버에 릴리스  (1) 2023.12.09
docker-compose.yaml 알아보기  (0) 2023.12.09
Dockerfile 알아보기  (0) 2023.12.07
docker-compose 명령어  (1) 2023.12.07
(docker) 기본 사용 명령  (0) 2023.08.11