그해
그래도해야지
그해
  • 그래도 해야지 (71)
    • Java (26)
    • Spring (8)
    • Golang (3)
    • CS (0)
      • 서버 (9)
      • 네트워크 (4)
      • 운영체제 (1)
      • WEB (0)
      • 데이터베이스 (6)
      • 자료구조 (1)
      • 보안 (3)
      • 알고리즘 (9)
    • 삽질 (0)
    • 회고 및 생각 (0)
hELLO · Designed By 정상우.
그해

그래도해야지

CS/서버

도커 컴포즈(Docker Compose)

2023. 5. 25. 01:47

Docker Compose

여러 컨테이너를 일괄적으로 정의하고 실행할 수 있는 툴을 말한다.

즉 하나의 서비스를 운영하기 위해서는 컨테이너화된 여러 개의 애플리케이션이 동작되어야하는데 이를 통합 관리할 수 있게 해준다.

yaml 형태 파일을 이용해 도커 컴포즈에게 요청을 하면, 도커 컴포즈가 이 파일을 읽어서 실행한다.

문법

만약 word press의 docker-compose 파일을 해석해보자면 ,

version: '3.1'

#컴포즈를 이용해서 실행할 컨테이너의 옵션을 정의
#이 services안에는 db와 wordpress가 존재 
services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80 
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - wordpress:/var/www/html

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - db:/var/lib/mysql

#볼륨 정의
volumes:
  wordpress:
  db:
  • services: 컴포즈를 이용해서 실행할 컨테이너의 옵션을 정의한다. 두개의 wordpress와 db 컨테이너가 존재한다.
  • version: 버전에 따라 지원 문법이 다르다.
  • build : 컨테이너 빌드
  • image : compose를 통해 이미지를 지정
  • command : 컨테이너에서 실행될 명령어 지정
  • port : 컨테이너가 공개하는 포트를 나열 port: -80 이라는 로컬호스트에 포트가 랜덤포트가 되고, 컨테이너 포트가 80으로 지정된다.
  • link : 다른 컨테이너와 연계할 때 연계할 컨테이너 지정를 지정
  • environment : 컨테이너에 적용할 환경변수를 정의
  • restart : 컨테이가 종료될 때 적용할 restart 정책
    • no : 재시각 되지 않음
    • always : 컨테이너를 수동으로 끄지 전까지 항상 재시작
    • on-failure :오류가 있을 시에 재시작
  • depends_on : 컨테이너 간의 종속성을 정의, 정의한 컨테이너가 먼저 동작 되어야함.

 

위의 도커 컴포즈에서 사용된 명령어들을 하나의 mysql 컨테이너를 실행시키기 위한 명령어로 정리하면 다음과 같다.

docker run --name db -v db:/var/lib/mysql --restart=always  MYSQL_PASSWORD=examplepass mysql:5.7

 

'CS > 서버' 카테고리의 다른 글

도커 데이터 보존하기 - Bind Mount/Volume  (0) 2023.05.24
도커 컨테이너 하드웨어 리소스 제한 관리 - Memory, CPU  (0) 2023.05.23
Docker로 mysql 설치 및 접속하기  (0) 2023.05.23
Dockerfile 이용해서 이미지 만들고, 도커 허브에 배포하기  (0) 2023.05.23
AWS - EC2, Elastic Beanstalk, Fargate, ECR, Lambda, ECS  (1) 2023.05.08
    'CS/서버' 카테고리의 다른 글
    • 도커 데이터 보존하기 - Bind Mount/Volume
    • 도커 컨테이너 하드웨어 리소스 제한 관리 - Memory, CPU
    • Docker로 mysql 설치 및 접속하기
    • Dockerfile 이용해서 이미지 만들고, 도커 허브에 배포하기
    그해
    그해
    그래도 공부는 해야지

    티스토리툴바