티스토리 뷰
Docker Compose (도커 컴포즈라고 읽습니다.) 는 여러 개의 컨테이너로 이루어진 Docker 이미지들을 관리하는 소프트웨어입니다. Docker Compose 에서는 compose 파일을 따로 준비하고, 그 파일을 커맨드 명령어를 활용해 컨테이너가 구동되기 위한 옵션 값들과 프로퍼티들을 (설정값) 가져와 컨테이너 서비스를 실행시키도록 도와주는 역할을 합니다.
Docker Compose 설치하기
사실 도커 컴포즈는 도커를 설치하면 자동으로 설치가 되는 툴입니다.
버전 체크는 아래의 명령어를 사용합니다.
docker-compose --version
Docker Compose 사용과정
1. Dockerfile 을 각각의 컨테이너 맞게 작성합니다.
도커 컴포즈라는 것이 애초에 존재하는 이미지를 관리하는 도구입니다. 그래서 기존에 이미지 파일을 생성하기 위한 Dockerfile 이 각각의 프로젝트, 서비스마다 존재하여야 합니다. 이를 통해 만들어지는 docker build 명령어를 통해 이미지를 생성하여 로컬서버에 저장합니다.
Dockerfile 예시
FROM amazoncorretto:17
ARG JAR_FILE=build/libs/*.jar
ARG AUTH_EMAIL_FILE=src/main/resources/auth/credentials
COPY ${JAR_FILE} app.jar
CMD mkdir .aws
COPY ${AUTH_EMAIL_FILE} /root/aws/credentials
ENV TZ=Asia/Seoul
ENTRYPOINT exec java $JAVA_OPTS -jar /app.jar
위의 Dockerfile은 자바 JDK 17 을 기반으로 한 Gradle 프로젝트를 aws에서 사용하기 위한 Mail 을 포함하여 이미지를 빌드하는 것을 기반으로 작성된 파일입니다.
추가적으로 로컬에 설치하지 않아 설치를 필요로 하는 라이브러리는 docker build 명령어를 통해 자동으로 설치됩니다. 예를 들어 위의 경우 amazoncorretto:17로 지정되어 있는 JDK 17 은 build 시 자동 설치됩니다.
build 명령어는 기본적으로 여러 개의 옵션을 줄 수 있지만 심플하게는 아래와 같이 사용 가능합니다.
$ cd {project-path}
$ docker build -t {project-name} .
2. docker-compose.yml 작성하기
다음으로 빌드된 이미지가 어떠한 환경에서 어떤 환경변수를 가지고 실행되는지 설정을 제공하는 docker-compose.yml 파일을 작성합니다.
docker-compose.yml
version: "3.4"
services:
abbo-dev:
container_name: 'abbo-dev'
restart: always
ports:
- 8081:8081
environment:
- "SPRING_PROFILES_ACTIVE=dev"
- JAVA_OPTS=--add-opens=java.base/java.math=ALL-UNNAMED --add-opens=java.base/java.time=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED
volumes:
- /Users/abbo/Desktop/docker-compose/dev/log:/dev-log
- ~/.aws/:/root/.aws:ro
- services: docker compose 가 관리할 service list를 적어줍니다. abbo-dev 라는 이름의 서비스가 작동됩니다.
- volumes: 로컬 영역과 컨테이너 영역을 경유하는 파일 시스템 구조를 정의해줍니다.
- left{로컬스토리지}:right{컨테이너내부}
3. docker-compose up 명령어로 실행하기
이제 작성된 docker-compose.yml 파일을 기반으로 up을 시킵니다. 실행 후 로컬환경에서 제대로 작동하는지 테스트해주어야 합니다.
docker-compose -p ${DOCKER_APP_NAME} -f docker-compose.yml up -d
실행 후 docker ps -a 명령어를 통하여 docker image들이 제대로 작동하는지 확인해줍니다.
4. docker-compose down 명령어로 up 된 이미지 내리기
제대로 서비스가 실행되었는지 확인되었다면 이미지를 down 명령어를 활용하여 서비스를 종료할 수 있습니다.
docker-compose -p ${DOCKER_APP_NAME} down
'Server' 카테고리의 다른 글
[Java] 에러 수정 일지 : required a bean of type 'com.querydsl.jpa.impl.JPAQueryFactory' that could not be found. (2) | 2022.09.01 |
---|---|
DataGrip Mysqldump 사용방법 (5) | 2022.08.18 |
LetsEncrypt SSL 인증서 갱신/삭제방법 및 자동갱신 적용하기 (0) | 2022.08.17 |
멀티노드 환경에서 ShedLock을 사용하여 Scheduled 사용하기 (0) | 2022.08.15 |
[Java] JPA 에서 group 을 컬럼명으로 쓰는 방법 (0) | 2022.08.12 |
Jenkins에서 배치 생성하기 (1) | 2022.08.01 |