Dockerfile과 Docker Compose

johaS2·2025년 2월 7일

Dockerfile 이란?

  • Docker 이미지를 만들기 위한 설정 파일
  • Docker 컨테이너를 빌드하기 위한 명령어가 포함되어 있다

Dockerfile 기본 구조

# Dockerfile
FROM ubuntu:latest
MAINTAINER Your Name <your-email@example.com>
RUN apt-get update && apt-get install -y nginx
COPY index.html /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

주요 명령어

  • FROM: 사용할 기본 이미지를 선택
  • MAINTAINER: 이미지를 만든 사람의 정보를 입력
  • WORKDIR: 작업 디렉터리 지정
  • RUN: 이미지에 명령을 실행하여 파일을 추가하거나 삭제
  • COPY: 로컬 파일을 컨테이너의 지정한 경로로 복사
  • EXPOSE: 컨테이너가 노출할 포트를 설정
  • CMD: 컨테이너가 실행될 때 실행할 명령을 설정

Docker Compose란?

  • Docker Compose는 여러 개의 Docker 컨테이너를 쉽게 정의하고 실행할 수 있는 도구
  • 하나의 YAML 파일을 통해 여러 서비스(컨테이너)를 동시에 정의하고 실행할 수 있어, 복잡한 애플리케이션을 관리하는 데 유용

Docker Compose 기본 구조

  • docker-compose.yml 파일을 사용
version: '3'

services:
  web:
    image: my-springboot-app
    ports:
      - "8080:8080"
    networks:
      - my-network

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    networks:
      - my-network

networks:
  my-network:
    driver: bridge

주요 Docker Compose 명령어

  • docker-compose up: 정의된 서비스를 빌드하고 실행합니다.
  • docker-compose down: 실행 중인 컨테이너를 중지하고 네트워크를 제거합니다.
  • docker-compose logs: 서비스의 로그를 확인합니다.
  • docker-compose build: Docker 이미지를 빌드합니다.

Docker Compose 파일 구성 요소

  • version: Docker Compose 파일의 버전. 보통 3이나 3.8을 사용합니다.
  • services: 애플리케이션에서 실행할 여러 컨테이너를 정의합니다.
  • image: 사용할 Docker 이미지를 지정합니다.
  • ports: 호스트와 컨테이너 간의 포트를 매핑합니다.
  • environment: 컨테이너 내부 환경 변수를 설정합니다.
  • networks: 컨테이너 간의 네트워크를 정의합니다.

Dockerfile과 Docker Compose 함께 사용하는 예시

  • Dockerfile을 사용해서 Spring Boot 애플리케이션을 빌드하고,
  • MySQL과 함께 실행하는 Docker Compose 설정
version: '3'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: password
    ports:
      - "3306:3306"
profile
passionate !!

0개의 댓글