Docker Compose
- 도커 컨테이너를 일괄적으로 정의하고 제어하는 도구
- 설정 파일을 도커 CLI로 번역하는 역할
Docker Compose-file 구성
Version
Services
- 실행하려는 컨테이너들을 정의하는 역할
- 이름, 이미지, 포트 매핑, 환경 변수, 볼륨 등을 포함
- 해당 정보를 가지고 컨테이너를 생성하고 관리
- image: 컨테이너를 생성할 때 쓰일 이미지 지정
- build: 정의된 도커파일에서 이미지를 빌드해 서비스의 컨테이너를 생성하도록 설정
- environment: 환경 변수 설정, docker run 명령어의 —env, -e 옵션과 동일
- command: 컨테이너가 실행될 때 수행할 명령어, docker run 명령어의 마지막에 붙 는 커맨드와 동일
- depends_on: 컨테이너 간의 의존성 주입, 명시된 컨테이너가 먼저 생성되고 실행
- ports: 개방할 포트 지정, docker run 명령어의 -p와 동일 (포트 포워딩)
- expose: 링크로 연계된 컨테이너에게만 공개할 포트 설정 volumes: 컨테이너에 볼룸을 마운트함
- restart: 컨테이너가 종료될 때 재시작 정책
- no: 재시작 되지 않음
- always: 외부에 영향에 의해 종료 되었을 때 항상 재시작 (수동으로 끄기 전까지)
- on-failure: 오류가 있을 시에 재시작
Docker Compose 명령어
docker-comopse -f local-infra.yml up -d
up: 도커 컴포즈 파일로, 컨테이너 생성하기
-f: 도커 컴포즈 파일 지정하기 -d: 백그라운드에서 실행하기
-d: 백그라운드에서 실행하기
# 실습1 - 도커 CLI로 여러개 컨테이너 관리하기
1. 도커 네트워크 리스트 조회
docker network ls
- bridge: 도커 엔진에 의해 자동으로 생성되는 가상 네트워크. 컨테이너끼리 연결되는 기본 네트워크
- host: 호스트 컴퓨터의 네트워크 인터페이스를 그대로 사용하는 네트워크
- none: 네트워크를 사용하지 않는 컨테이너
2. 도커 네트워크 생성
docker network create wordpress_net
3. mysql db container 생성
docker \
run \
--name "db" \
-v "$(pwd)/db_data:/var/lib/mysql" \
-e "MYSQL_ROOT_PASSWORD=root_pass" \
-e "MYSQL_DATABASE=wordpress" \
-e "MYSQL_USER=docker_pro" \
-e "MYSQL_PASSWORD=docker_pro_pass" \
--network wordpress_net \
mysql:latest
4. wordpress container 생성
docker \
run \
--name app \
-v "$(pwd)/app_data:/var/www/html" \
-e "WORDPRESS_DB_HOST=db" \
-e "WORDPRESS_DB_NAME=wordpress" \
-e "WORDPRESS_DB_USER=docker_pro" \
-e "WORDPRESS_DB_PASSWORD=docker_pro_pass" \
-e "WORDPRESS_DEBUG=1" \
-p 8888:80 \
--network wordpress_net \
wordpress:latest
5. 컨테이너 확인
docker ps
Host : 8888 → Container : 88 wordpress 잘 실행되는 것 확인
# 실습2 - docker-compse.yml 파일 실행하기
1. /home/ec2-user/docker-compose 경로에 docker-compose 폴더 생성
2. docker-compose.yml, Docker 생성
3. yml 파일 실행
docker-compose -f docker-compose.yml up --build
확인
정리
EC2 Linux Docker-compose 설치 방법
// 최신 docker compose를 해당 링크에서 받을 수 있음
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
// 권한 부여
sudo chmod +x /usr/local/bin/docker-compose
// 설치 확인
docker-compose version
* 참고
- 원티드(프리온보딩 백엔드 챌린지 4월) - Docker: 나만의 도커 이미지 만들기부터, 클라우드 배포까지! - Github
'Docker' 카테고리의 다른 글
[Docker] 나만의 도커파일 & 이미지 생성(EC2 환경) (0) | 2023.04.15 |
---|---|
[Docker] 도커를 활용하는 클라우드 서비스 (0) | 2023.04.13 |
[Docker] Docker에 대한 이해 및 실습 - httpd (0) | 2023.04.11 |
[Docker] Docker 설치 방법, Docker CLI 정리 (0) | 2023.04.10 |
[Docker] Docker 기본 개념 및 구조 & 컨테이너 기술 (0) | 2023.04.09 |
댓글