Docker compose
Docker Compose는 여러 컨테이너화된 애플리케이션을 정의하고 실행하기 위한 도구이다.
간단히 말해, Docker Compose를 사용하면 여러 Docker 컨테이너로 구성된 애플리케이션을 쉽게 관리하고 조정할 수 있다.
docker-compose.yml
Docker Compose는 docker-compose.yml이라는 YAML 형식의 파일을 사용한다.
이 파일에서는 애플리케이션을 구성하는 서비스, 네트워크, 볼륨 등을 정의할 수 있다.
version: '3.8'
services:
web:
image: my-web-app:latest
ports:
- "5000:5000"
depends_on:
- db
environment:
DATABASE_URL: "db:3306"
networks:
- app-network
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- db-data:/var/lib/mysql
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
db-data:
- 버전 (Version)
- version: 사용하는 Docker Compose 파일 형식의 버전을 명시하며, 위 경우 3.8 버전을 사용하고 있으며, 이는 Docker Compose 기능과 호환성을 결정
- 서비스 (Service)
- services: 여러 서비스(컨테이너)를 정의
- 웹 서비스
- web: 웹 애플리케이션 서버의 서비스 이름
- image: 사용할 Docker 이미지를 지정, 여기서는 my-web-app:latest라는 이미지를 사용
- ports: 컨테이너 포트와 호스트 포트를 매핑. 5000:5000은 컨테이너의 5000번 포트를 호스트의 5000번 포트에 연결(컨테이너 외부:컨테이너 내부)
- depends_on: 이 서비스가 시작되기 전에 시작되어야 할 다른 서비스를 명시한다. 여기서는 db 서비스가 먼저 시작되어야 함을 나타냄
- environment: 컨테이너 내에서 사용될 환경 변수를 설정, DATABASE_URL에 db:3306을 설정하여 데이터베이스 서버의 위치와 포트를 지정
networks: 이 서비스가 속할 네트워크를 지정. 여기서는 app-network를 사용.
- 데이터베이스 서비스
- db: 데이터베이스 서버의 서비스 이름
- image: 사용할 Docker 이미지를 지정, 여기서는 mysql:5.7 이미지를 사용
- environment: 환경 변수를 설정, MYSQL_ROOT_PASSWORD에 데이터베이스의 루트 비밀번호를 설정
- volumes: 데이터를 영구적으로 저장할 볼륨을 매핑, db-data 볼륨을 컨테이너의 /var/lib/mysql 경로에 연결
- networks: app-network 네트워크에 속하도록 설정
- 네트워크 (Networks)
- networks: 서비스 간 통신에 사용될 네트워크를 정의
- app-network: 사용할 네트워크의 이름
- driver: 네트워크 드라이버를 지정, bridge는 가장 일반적인 드라이버 유형으로, 독립된 서브넷에서 컨테이너를 실행하고, 물리적 네트워크와 연결하기 위한 브리지를 생성
- 볼륨 (Volumes)
- volumes: 데이터를 영구적으로 저장하기 위한 볼륨을 정의
- db-data: 사용할 볼륨의 이름, 이 볼륨은 db 서비스에서 MySQL 데이터를 저장하는 데 사용
docker-compose 실행하기
- docker-compose 파일이 저장된 위치로 이동
- docker-compose 실행
docker-compose up -d
'Docker' 카테고리의 다른 글
docker-compose 로 mysql 설치하기 (0) | 2023.12.27 |
---|