반응형
Jake Seo
제이크서 위키 블로그
Jake Seo
전체 방문자
오늘
어제
  • 분류 전체보기 (715)
    • 일상, 일기 (0)
    • 백준 문제풀이 (1)
    • 릿코드 문제풀이 (2)
    • 알고리즘 이론 (10)
      • 기본 이론 (2)
      • 배열과 문자열 (8)
    • 데이터베이스 (15)
      • Planet Scale (1)
      • MSSQL (9)
      • 디비 기본 개념 (1)
      • SQLite 직접 만들어보기 (4)
    • 보안 (7)
    • 설계 (1)
    • 네트워크 (17)
      • HTTP (9)
      • OSI Layers (5)
    • 회고 (31)
      • 연간 회고 (2)
      • 주간 회고 (29)
    • 인프라 (52)
      • 도커 (12)
      • AWS (9)
      • 용어 (21)
      • 웹 성능 (1)
      • 대규모 서비스를 지탱하는 기술 (9)
    • 깃 (7)
    • 빌드 도구 (7)
      • 메이븐 (6)
      • 그레이들 (0)
    • Java (135)
      • 이펙티브 자바 (73)
      • 자바 API (4)
      • 자바 잡지식 (30)
      • 자바 디자인 패턴 (21)
      • 톰캣 (Tomcat) (7)
    • 프레임워크 (64)
      • next.js (14)
      • 스프링 프레임워크 (28)
      • 토비의 스프링 (6)
      • 스프링 부트 (3)
      • JPA (Java Persistence API) (5)
      • Nest.js (8)
    • 프론트엔드 (48)
      • 다크모드 (1)
      • 노드 패키지 관리 매니저 (3)
      • CSS (19)
      • Web API (11)
      • tailwind-css (1)
      • React (5)
      • React 새 공식문서 요약 (1)
      • HTML (Markup Language) (5)
    • 자바스크립트 (108)
      • 모던 자바스크립트 (31)
      • 개념 (31)
      • 정규표현식 (5)
      • 코드 스니펫 (1)
      • 라이브러리 (6)
      • 인터뷰 (24)
      • 웹개발자를 위한 자바스크립트의 모든 것 (6)
      • 팁 (2)
    • Typescript (49)
    • 리눅스와 유닉스 (10)
    • Computer Science (1)
      • Compiler (1)
    • IDE (3)
      • VSCODE (1)
      • IntelliJ (2)
    • 세미나 & 컨퍼런스 (1)
    • 용어 (개발용어) (16)
      • 함수형 프로그래밍 용어들 (1)
    • ORM (2)
      • Prisma (2)
    • NODEJS (2)
    • cypress (1)
    • 리액트 네이티브 (React Native) (31)
    • 러스트 (Rust) (15)
    • 코틀린 (Kotlin) (4)
      • 자바에서 코틀린으로 (4)
    • 정규표현식 (3)
    • 구글 애널리틱스 (GA) (1)
    • SEO (2)
    • UML (2)
    • 맛탐험 (2)
    • 리팩토링 (1)
    • 서평 (2)
    • 소프트웨어 공학 (18)
      • 테스팅 (16)
      • 개발 프로세스 (1)
    • 교육학 (1)
    • 삶의 지혜, 통찰 (1)
    • Chat GPT (2)
    • 쉘스크립트 (1)
    • 컴파일 (2)
    • Dart (12)
    • 코드팩토리의 플러터 프로그래밍 (4)
    • 플러터 (17)
    • 안드로이드 스튜디오 (1)
    • 윈도우즈 (1)
    • 잡다한 백엔드 지식 (1)
    • 디자인 패턴 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • item7
  • 메이븐 골
  • prerendering
  • next js app
  • 팩터리 메서드 패턴
  • 외래키 제약조건
  • 슬로우 쿼리
  • 플라이웨이트패턴
  • 도커공식문서
  • NEXT JS
  • 자바스크립트 인터뷰
  • bean Validation
  • 알고리즘
  • Java
  • 이펙티브자바
  • item8
  • 이펙티브 자바
  • serverless computing
  • 싱글턴
  • 자바스크립트
  • 싱글톤 패턴
  • MSSQL
  • 자바
  • 느린 쿼리
  • 프로그래머의 뇌
  • 토비의 스프링
  • Pre-rendering
  • 빈 검증
  • pnpm
  • 참조 해제
  • 러스트
  • 자바스크립트 면접
  • Javadoc 자바독 자바주석 주석 Comment
  • 스프링 검증
  • 작업기억공간
  • 디자인패턴
  • 서버리스 컴퓨팅
  • try-with-resources
  • 추상 팩터리 패턴
  • 자료구조
  • 메이븐 라이프사이클
  • 이펙티브 자바 item9
  • 자바 검증
  • 객체복사
  • 메이븐 페이즈
  • 자바 디자인패턴
  • Next.js
  • rust
  • 싱글톤
  • item9

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Jake Seo

제이크서 위키 블로그

인프라/도커

도커 컴포즈 (Docker Compose) 란? 도커 컴포즈 사용법

2024. 2. 18. 22:37

도커 컴포즈란?

  • 보통 개발할 때 로컬 환경이나 개발 환경에서 가상의 DB를 띄우기 위해서 많이 사용한다.
  • 도커 컴포즈는 단일 호스트 환경에서 동작하고, 고가용성도 지원하지 않기 때문에 운영에서는 비슷한 역할을 하지만 고가용성을 지원하는 쿠버네티스를 사용한다.

도커 컴포즈 이용하기 (Node.js 기준)

  • 프로젝트 메인 디렉토리에 docker-compose.yaml 파일을 생성한다.

picture 0

도커 컴포즈 문법에 맞게 docker-compose.yaml 파일 작성

  • Docker Compose 공식문서 에 작성법이 있긴 한데, 예제를 보거나 GPT 를 이용하는 것이 빠를 것 같다.
  • Postgres Yaml 파일 작성 방식은 Postgres 도커 페이지 에서 참고할 수있다.
services: # 자동완성됨
  postgres: # 우리가 지어준 서비스의 이름
    image: postgres:15 # 도커 허브에서 정보를 가져와서 자동완성됨
    restart: always
    volumes: # 도커 이미지 안에 존재했던 정보를 실제 디렉토리와 매핑. 도커를 종료해도 데이터가 남도록 함.
      - ./postgres-data:/var/lib/postgresql/data # 콜론을 기준으로 왼쪽은 현재 위치, 오른쪽은 이미지 안에 존재하는 위치. 둘의 싱크를 맞춰주겠다.
    ports:
      # 로컬 환경과 이미지의 두 포트를 연동함
      - "5431:5432" # 로컬의 5431을 도커의 5432와 연결, 로컬에서 연결할 땐 포트 충돌 방지를 위해 5431 로 바인딩
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      POSTGRES_DB: postgres

GPT 에 물어본 예제

  • 아래와 같이 프롬프트를 작성하면, 기작성된 yaml 파일을 받을 수 있고, 여기서 모르는 뜻을 물어봐서 수정해보면 될 것 같다.

아래는 내 질문 예시다.

Give me a yaml file example of docker compose. I want to create latest version of postgresql container. set username and password to postgres. i want to use default port number.

답변

Sure, I can help you with that. Below is an example of a Docker Compose YAML file for setting up a PostgreSQL container with the latest version. The username and password are set to "postgres", and it uses the default PostgreSQL port, which is 5432.
version: "3.8"
services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

이 구성은 다음을 수행합니다:

  1. 버전: 작성 파일 형식의 버전을 지정합니다. 이 예에서는 버전 '3.8'이 사용됩니다.

  2. 서비스: 실행할 서비스를 정의합니다. 이 경우 PostgreSQL 서비스만 정의됩니다.

  3. 이미지: Docker Hub의 최신 버전의 PostgreSQL 이미지를 사용합니다.

  4. 환경: 환경 변수를 설정합니다. POSTGRES_USER와 POSTGRES_PASSWORD는 모두 'postgres'로 설정됩니다.

  5. ports: 컨테이너의 기본 PostgreSQL 포트(5432)를 호스트에 매핑합니다. 이렇게 하면 호스트 머신의 포트 5432를 사용하여 컨테이너 내부에서 실행 중인 PostgreSQL 서버에 연결할 수 있습니다.

  6. 볼륨: 데이터베이스 데이터를 유지할 볼륨을 마운트합니다. 'postgres_data'는 볼륨의 이름이고, /var/lib/postgresql/data는 컨테이너에서 PostgreSQL이 데이터를 저장하는 경로입니다.

이 구성은 docker-compose.yml이라는 파일에 저장할 수 있습니다. 이 파일이 있는 디렉터리로 이동하여 docker-compose up 명령을 실행하면 PostgreSQL 컨테이너가 시작됩니다. 그러면 PostgreSQL 이미지가 없는 경우 다운로드되고 지정된 설정으로 컨테이너가 시작됩니다.

도커 컴포즈 실행

  • 위에 나온 것처럼
  • docker-compose up 명령어를 통해 실행 가능하다.
    • 단, 데스크탑용 도커가 설치되어 있고 실행중인 상태에서 입력해야 한다.
반응형
저작자표시 비영리 (새창열림)

'인프라 > 도커' 카테고리의 다른 글

도커 컨테이너의 라이프사이클 (Docker container lifecycle)  (0) 2024.02.06
컨테이너 런타임 (Container Runtime) 이란 무엇인가? 그리고 runc  (0) 2024.02.04
도커의 아키텍처  (0) 2024.02.04
컨테이너 가상화란?  (0) 2024.02.04
LXC (Linux Container, 리눅스 컨테이너) 란?  (0) 2024.02.04
    '인프라/도커' 카테고리의 다른 글
    • 도커 컨테이너의 라이프사이클 (Docker container lifecycle)
    • 컨테이너 런타임 (Container Runtime) 이란 무엇인가? 그리고 runc
    • 도커의 아키텍처
    • 컨테이너 가상화란?
    Jake Seo
    Jake Seo
    ✔ 잘 보셨다면 광고 한번 클릭해주시면 큰 힘이 됩니다. ✔ 댓글로 틀린 부분을 지적해주시면 기분 나빠하지 않고 수정합니다. ✔ 많은 퇴고를 거친 글이 좋은 글이 된다고 생각합니다. ✔ 간결하고 명료하게 사람들을 이해 시키는 것을 목표로 합니다.

    티스토리툴바