docker-compose.yml 파일 하나로 애플리케이션의 서비스, 네트워크, 볼륨 등을 정의할 수 있다.Docker 20.10부터는 Docker Compose가 기본적으로 설치. 따라서 별도로 설치할 필요가 없다.
이전 버전은 중간에 “-” 가 필요하지만 기본 설치 부터는 “ ”으로 대체 되었다. ⇒ 이거 적응이 안 돼서
docker-compose
docker compose
docker-compose.yml:Docker Compose 파일은 YAML 형식으로 작성되며, 애플리케이션의 서비스, 네트워크, 볼륨 등을 정의.
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
app:
build: .
ports:
- "8081:8080"
depends_on:
- db
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
version: Docker Compose 파일의 버전을 지정
services: 애플리케이션의 각 서비스를 정의
web, app, db: 각각의 서비스 이름
image: 서비스를 실행할 Docker 이미지를 지정
build: Dockerfile이 있는 디렉토리 경로를 지정하여 이미지를 빌드
ports: 호스트와 컨테이너 간의 포트를 매핑.
depends_on: 다른 서비스가 먼저 실행되어야 하는 순서를 지정
environment: 컨테이너의 환경 변수를 설정
docker-compose.yml 파일 작성
docker-compose.yml 파일:version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
app:
build: .
ports:
- "8081:8080"
depends_on:
- db
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
얘네들도 자주 사용했던 애들이니 굳이 보지는 않을 예정
docker compose up:docker-compose.yml 파일에 정의된 서비스를 빌드하고 시작d 옵션을 추가docker compose up -d
docker compose -f /path/to/your/project/docker-compose.yml updocker compose down:docker compose downdocker compose build:docker-compose.yml 파일에 정의된 서비스를 빌드docker compose builddocker compose ps:docker compose psdocker compose logs:docker compose logs1) docker-compose.yml 파일 작성
version: '3'
services:
web:
image: nginx
ports:
- "8080:80"
app:
build: .
ports:
- "8081:8080"
depends_on:
- db
db:
image: postgres
environment:
POSTGRES_PASSWORD: example
2) Dockerfile 작성
app 서비스의 이미지를 빌드하기 위한 Dockerfile을 작성FROM openjdk:11-jre-slim
COPY target/myapp.jar /app/myapp.jar
WORKDIR /app
ENTRYPOINT ["java", "-jar", "myapp.jar"]
3) Docker Compose로 서비스 시작
docker-compose.yml 파일이 있는 디렉토리에서 다음 명령어를 실행하여 서비스를 시작docker compose up -d
4) 서비스 상태 확인
docker compose ps
5) 서비스 로그 확인
docker compose logs
6) 서비스 중지 및 정리
docker compose down
이러한 방식으로 Docker Compose를 사용하면 여러 컨테이너로 구성된 애플리케이션을 쉽게 관리하고 배포할 수 있다. docker-compose.yml 파일 하나로 모든 서비스의 설정을 관리할 수 있어 일관된 환경을 제공할 수 있다.
참고: Docker Compose는 Docker 버전 20.10부터 기본적으로 포함되어 있으므로 별도의 설치가 필요하지 않다 (Docker) (Docker Documentation).