Docker compose를 이용하면
여러 개의 container를 run하는데 적어둔 명령어를
하나의 파일로 정리하고 이를 바탕으로 실행하게 해준다
docker Desktop 앱을 설치한다면 이미 설치됐다
그런데 새로 배포할 리눅스 보드에 해야해서
cli로 진행한다면
인텔 기반 장치일 경우...
공식 방법 : https://docs.docker.com/compose/install/compose-plugin/#installing-compose-on-linux-systems
ARM 기반의 장치일 경우...
여기서 안정화된 최신 docker-compose 버전을 찾고
https://github.com/linuxserver/docker-docker-compose/releases/
cd /usr/bin
wget https://github.com/linuxserver/docker-docker-compose/releases/download/1.29.2-ls51/docker-compose-arm64
# docker-compose 이름으로 명명
mv docker-compose-arm64 docker-compose
# 실행 권한 부여
chmod +x docker-compose
# 심볼릭 링크 설정
# /usr/bin/docker-compose를 삭제하면 자동적으로 심볼릭 링크도 삭제됨
ln -s /usr/bin/docker-compose /usr/local/bin
# 설치 확인
docker-compose --version
아래와 같은 파일 구조에서
node는 3초마다 메세지를 출력하고
python은 2초마다 메세지를 출력하는데
node, python 각각에 대해서 run 명령어를 쓰지 않고
docker-compose.yml 파일을 작성하여 다룰 것이다
디렉토리
➜ compose-test tree .
.
├── docker-compose.yml
├── node
│ ├── Dockerfile
│ └── main.js
└── py
├── Dockerfile
└── main.py
node/main.js
setInterval(
()=>{console.log("node : ticktock...")},
3000
)
node/Dockerfile
FROM node
COPY . .
CMD ["node", "main.js"]
py/main.py
import time
import logging
logging.basicConfig(level=logging.INFO)
while True:
time.sleep(2)
logging.info("python: ticktock...")
py/Dockerfile
FROM python
COPY . .
CMD ["python3", "main.py"]
docker-compose.yml
version: "3"
services:
python-test:
build: py
node-test:
build: node
docker-compose.yml이 있는 곳에서 docker-compose up
을 하면
각 image에서 출력되는 log가 나온다
--detach 옵션을 통해
log 없이 background에서 작동하도록 할 수 있다
docker-compose up -d
background에서 작동될 때 log를 보고 싶다면
docker-compose logs
log 출력되는 흐름대로 보고 싶다면
docker-compose logs -f
마지막 log에서 100개의 줄만 보고 싶다면
docker-compose logs --tail 100
한 container의 log만 보고 싶다면
docker-compose logs {container 이름}
각 로그의 출력 시간도 함께 보고 싶다면
docker-compose logs -t
(ISO 형식으로 출력된다)
새로 추가한 코드가 Using Cache로 인하여 build 시 포함되지 않았을 때
docker-compose up --build --force-recreate
특정 container에 들어가고 싶다면
docker-compose exec {container 이름}
특정 container를 껐다가 켜고 싶다면
docker-compose restrat {container 이름}
각 컨테이너 상태를 살펴보고 싶다면
(IMAGE 앞단에 docker-compose.yml이 위치한 폴더 이름과 같은 것만 보면 된다)
docker ps -a
각 컨테이너 별 프로세스의 상태를 살펴보고 싶다면
docker-compose top
compose를 종료하고 싶을 때
Ctrl+C 강제종료 연타 or
docker-compose down