docker
dockerFile이란?
winwin-k9
2023. 2. 14. 05:22
dockerFile
Dockerfile은 인프라스트럭쳐의 프로비저닝(서버 환경 셋팅)이라고 생각하면 된다. docker build라는 명령어를 통해서 Docker가 Dockerfile을 읽어서 자동으로 도커 이미지를 빌드한다.
- 도커 컴포즈는 docker run 명령어를 여러 개 모아놓은 것과 같다.
컨테이너와 주변 환경을 생성하고 네트워크와 볼륨까지 함께 만들 수 있다. - Dockerfile 스크립트는 단지 이미지를 만들기 위한 것으로 네트워크나 볼륨은 만들 수 없다.
build는 이미지를 도커 파일로 따로 만들어서 사용하는 옵션으로, image 설정 대신 사용한다.
- context 옵션: 도커 파일이 있는 디렉터리 경로
- dockerfile 옵션: context 옵션 경로 안에 있는 Dockerfile명
version: "3"
services:
database:
image: mysql
environment:
MYSQL_DATABASE: userdb
MYSQL_USER: user
MYSQL_PASSWORD: userpwd
MYSQL_ROOT_HOST: '%'
MYSQL_ROOT_PASSWORD: rootpwd
volumns:
- ./db/data:/var/lib/mysql
ports:
- 3306:3306
restart: always
application:
build: .
depands_on:
- database
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://localhost:3306/userdb
SPRING_DATASOURCE_USERNAME: user
SPRING_DATASOURCE_PASSWORD: userpwd
restart: always
- version
- Comose 파일 버전로 도커 엔진 버전별 사용가능한 버전이 존재
- services
- Docker Compose로 하나로 관리할 서비스들을 정의. 이들이 각각 컨테이너가 된다.
- services 아래 설정되는 각 서비스의 이름으로 컨테이너간 통신할 수 있다.
먼저 DB 서비스을 보면
- database
- “database”라는 이름의 서비스
- 백엔드에서 DB 설정을 한다면 hostname에 이 값을 사용할 수 있다.
- image
- mysql 기반 이미지 사용
- environment
- 해당 컨테이너에서 사용할 환경변수 설정
- mysql 이미지는 컨테이너의 환경변수를 참조하여 MySQL DB, 유저 정보등을 구성함
- volumns
- 호스트의 파일시스템과 도커 컨테이너의 파일시스템을 마운트함
- DB 데이터 유지를 위해 필수적으로 설정되야함
- ports
- 호스트의 포트와 컨테이너의 포트를 매핑함
- restarts
- 오류 등으로 컨테이너가 종료됐을때 재시작 여부
다음은 Spring Boot 애플리케이션 컨테이너에 대한 설정이다.
- application
- “application”라는 이름의 서비스
- build
- Dockerfile을 이용해 컨테이너화 할 때 사용하는 옵션
- 위 database 컨테이너와 달리 Dockerfile을 빌드하여 컨테이너화 해야하기 때문에 사용
- Dockerfile이 docker-compose.yml 파일과 다른 경로에 있을경우엔 “.” 대신 해당 경로 지정
- depends_on
- 각 서비스간 종속성을 두어 실행 순서를 정할 수 있다.
- 이 예시에선 DB가 먼저 올라가야하기 때문에 “database” 서비스에 의존성을 갖게함
- environment
- database 설정과 동일하게, 환경변수를 컨테이너 내부에 세팅해주기 위해 사용한다.
- 프로젝트에서 채택한 방식에 따라 적절하게 설정해준다.
- restarts
- 위와 동일
728x90