본문 바로가기

Develop/Container4

Docker로 React, Nginx, Spring Boot 컨테이너 배포하기 이전까진 도커 캐싱이 뭔지 모르고 어영부영 Dockerfile 작성하면서 살았다. 예에에에에에에전에 도커를 처음 사용해 프로젝트 진행했을 때 컴퓨터 수명 다 깎아 먹었었다. 코드 수정이 있을 때마다 이미지 재생성을 위한 빌드를 계속했기 때문에 (한 번 빌드 시 20분 씩 걸렸던 기억이다....) 프로젝트 구조는 대충 이렇게 생겼다. ├─docker-compose.yml ├─backend │ ├─Dockerfile │ ├─build │ └─src └─frontend ├─Dockerfile ├─nginx.conf ├─build └─src Spring Boot Dockerfile 그레이들 코틀린 버전이라 kts 확장자로 작성했는데 순수 그레이들이면 .kts를 삭제하면 된다. FROM openjdk:11 AS .. 2023. 6. 9.
[Docker] Dockerfile 문법 Dockerfile은 애플리케이션을 패키징 하기 위한 간단한 스크립트이다. Dockerfile은 일련의 인스트럭션으로 구성돼 있는데, 인스트럭션을 실행한 결과로 도커 이미지가 만들어진다. 기본 다섯 가지 인스트럭션만으로도 엔간한(!) 애플리케이션을 도커로 패키징할 수 있다. FROM 모든 이미지는 다른 이미지에서 출발한다. 애플리케이션을 실행하는 데 필요한 런타임 이미지를 가져와야 한다. 예를 들어 Spring이면 Java를, Django라면 Python을. ENV 환경 변수 값을 지정하기 위한 인스트럭션이다. 값을 지정하기 위해 [key]="[value]" 형식을 따른다. WORKDIR 컨테이너 이미지 파일 시스템에 디렉터리를 만들고, 해당 디렉터리를 작업 디렉터리로 지정하는 인스트럭션이다. COPY .. 2023. 4. 14.
[Docker] 자주 쓰는 Docker 명령어 모음 도커 이미지 내려 받기 docker image pull [이미지 이름] 컨테이너 이미지 빌드하기 빌드하기 위해 이미지의 이름, 패키징에 필요한 파일의 경로를 추가로 지정해야 한다. 경로는 대개 온점(.)으로 표현하는데, Dockerfile이 존재하는 '현재 작업 디렉터리'라는 뜻이다. docker image build [경로] 옵션 설명 --tag [이름] 이미지의 이름을 지정한다. 도커 컨테이너 실행 docker container run [이미지 이름] 옵션 설명 -d, --detach 컨테이너를 백그라운드에서 동작한다. --name 컨테이너에 이름을 붙인다. (붙이지 않으면 무작위 ID로 생성됨) -e, --env [변수명]=[설정값] 컨테이너의 환경변수를 부여할 수 있다. -it 컨테이너와 대화식으.. 2023. 4. 13.
[Docker] 도커가 컨테이너를 실행하는 원리 도커 엔진 : 도커의 관리 기능을 맡는 컴포넌트이다. 로컬 이미지 캐시를 담당하므로 새로운 이미지가 필요하면 이미지를 내려받으며, 기존 이미지가 있다면 전에 내려받은 이미지를 사용한다. 호스트 운영체제와 함께 컨테이너와 가상 네트워크 등 도커 리소스를 만드는 일도 담당한다. 도커 엔진은 항시 동작하는 백그라운드 프로세스이다. 도커 엔진은 도커 API를 통해 맡은 기능을 수행한다. 도커API는 표준 HTTP 기반 REST API이다. 도커 엔진의 설정을 수정하면 이 API를 네트워크를 경유해 외부 컴퓨터로부터 호출할 수 없도록 차단하거나 허용할 수 있다. 도커 명령행 인터페이스(도커 CLI)는 도커 API의 클라이언트다. 우리가 docker 명령을 사용할 때 실제로 도커 API를 호출하는 것이 바로 도커 .. 2023. 4. 12.