자율 프로젝트: Docker Compose

상현·2022년 11월 30일
0
post-thumbnail

Dockerfile에 이어 Compose(docker-compose)에 대해 이야기를 해보려고 한다.


Compose는 다중 컨테이너로 구성된 도커 어플리케이션을 정의하고 실행시키는 도구이다. Compose는 YAML파일을 이용해 서비스를 구성한다. Compose는 모든 환경에서 동작하며 어플리케이션의 라이프 사이클 전체를 관리할 수 있다.

출처


나는 라즈베리파이에서 계속 진행을 했기에 아래의 코드를 작성하여 설치를 했다.

DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins


curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-aarch64 -o $DOCKER_CONFIG/cli-plugins/docker-compose


chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

설치가 되었으면 version을 확인하여 정상적으로 설치가 되었는지 확인한다.

docker compose --version

이제 docker-compose.yml 파일이 있는 곳에서 docker compose up,docker compose down으로 컨테이너를 쉽게 끄고 켤 수 있다.



명령어

  • -f <파일이름> : 파일 이름이나 경로가 다르면 해당 옵션을 통해 설정할 수 있으며 여러개의 yaml파일을 사용할 때에도 쓰인다.

    • 여러개의 파일을 불러올 경우 나중의 설정이 더 우선된다.

  • up : 모든 컨테이너를 생성하고 실행한다.

    • -d:백그라운드에서 실행한다.
    • -d플래그를 사용하지 않으면 컨테이너의 로그가 나오고 Ctrl+C를 누르면 실행되던 컨테이너들이 정지된다.

  • start <컨테이너 이름> : 특정 컨테이너를 작동하기 위해 사용한다.

  • down : 모든 컨테이너를 멈추고 정지한다.

  • stop <컨테이너 이름> : 특정 컨테이너를 정지하기 위해 사용한다.

  • ps : Compose에서 정의된 모든 컨테이너 목록을 확인한다.

  • run : 특정 컨테이너에 특정 명령어를 실행할때 사용한다.

  • config : Compose의 설정을 확인할 때 사용한다.

Compose의 문법

version: "3.3"

services:
  server:
    build: .
    container_name: sdc
    restart: always
    ports:
      - '8080:8080'
    working_dir: /app
    volumes:
      - ./app/log:/app/log
      - ./app/model:/app/model
    environment:
      - TZ=Asia/Seoul
  landing:
    build: home
    container_name: landing
    ports:
      - "80:80"
    depends_on:
      - server

위의 코드는 자율프로젝트에 사용된 코드이다.

version: "3.3"

docker-compose.yml의 명세 버전을 의미한다.

build: .

빌드를 할 경우 작동하며 Dockerfile 경로이다.
up을 하기 전에 docker-compose build를 통해 빌드를 진행한다.

container_name: landing

컨테이너 이름이다.

restart: always

재시작 정책을 의미한다. no, on-failure등 필요한대로 설정할 수 있다.

ports:
  - "80:80"

호스트 포트:컨테이너 포트를 의미한다.

working_dir: /app

컨테이너가 돌아가는 경로를 변경한다.

volumes:
  - ./app/log:/app/log
  - ./app/model:/app/model

액세스해야 하는 경로나 볼륨을 정의한다.

environment:
  - TZ=Asia/Seoul

사용하고자 하는 이미지의 환경변수이며, dockerfile보다 docker-compose의 우선순위가 높다.

depends_on:
  - server

서비스간의 시작, 종료에 관한 종속성을 정의한다. 위의 코드에서는 serverlanding이 연결되어 있고 landing동작 전에 server가 동작한다.



이것으로 Compose의 설치, 명령어, 문법을 일부 알아보았다.

0개의 댓글