Docker compose

su-mmer·2022년 9월 19일
0

아묻따 도커 공부

목록 보기
9/18

Docker Compose

웹 3계층 시스템 아키텍처

웹 시스템의 서버들을 역할 별로 3개로 나누는 설계

프론트 서버(웹 서버)

  • 클라이언트의 웹 브라우저가 보낸 HTTP 요청을 받아, HTTP 응답을 반환하는 서버
  • 미들웨어로 구축하는 경우도 있으며, Nginx, Microsoft IIS 등

애플리케이션 서버

  • 업무 처리를 실행하는 서버
  • 미들웨어로 구축하는 경우도 있음

데이터베이스 서버

  • 영ㄱ 데이터를 관리하기 위한 서버
  • RDBMS 기능을 가진 미들웨어에서 관리(MySQL, PostgreSQL, Oracle Database 등)
  • 높은 가용성이 요구되어 클러스터링 같은 기술로 다중화

Docker Compose

  • 여러 컨테이너를 모아서 관리하기 위한 툴
  • docker-compose up 명령어로 실행

docker-compose.yml

  • 버전을 명시해야 함 version: '3.x'

  • service, network, volume 정의(root 단계에서)

  • image: 베이스 이미지

  • build: Dockerfile을 빌드하여 베이스 이미지로 지정할 경우
    - context: Dockerfile이 있는 디렉토리의 경로나 Git의 URL을 경로로 지정할 경우
    - args: 이미지를 빌드할 때 인수를 지정할 경우

    services:
    	webserver:
        	build:
            	context: /data  # 경로 지정
                args:  # 인수 지정
                	projectno: 1
                    user: asa
                dockerfile: Dockerfile-alternate  # Dockerfile
  • commandentrypoint 사용 가능

  • links: 컨테이너 간 링크 연결. <'서비스명'>:<'alias명'> 3버전부터 사용 안함

  • ports: <'host port'>:<'container port'>
    - expose: 호스트 머신에 대한 포트를 공개하지 않고 링크 기능을 사용하여 연결하는 컨테이너에게만 포트 공개

  • depends_on: 서비스의 의존 관계(시작 순서). 시작 순서만 제어할 뿐 이용 가능해지는 시간까지 기다리는 것이 아님.

  • environment: 컨테이너 안의 환경변수 지정
    - env_file: 환경변수가 많아서 다른 파일에 환경변수를 정의하고 불러들일 경우

  • container_name: 컨테이너에 이름 붙이기. 커스텀명을 지정하면 여러 컨테이너로 스케일 할 수 없음에 유의.
    - label: 컨테이너에 라벨 붙이기

  • volumes: 컨테이너에 볼륨 마운트
    - volumes_from: 다른 컨테이너로부터 모든 볼륨 마운트

version: "3.0"

services:
	webserver:
    	image: ubuntu
        ports:
        	- 80:80
        networks:
        	- webnet
            
    redis:
    	image: redis
        networks:
        	- webnet
            
networks:
	webnet:
    
volumes:
	data-volume:

0개의 댓글