[mlops] 1. ML Service

dmswl·2025년 1월 23일

MLOps

목록 보기
1/4

Jupyter yml

➜  jupyter cat docker-compose.yml
version:  '3'

services:
  datascience-notebook:
    image: jupyter/datascience-notebook:python-3.10.9
    container_name: jupyter_notebook
    hostname: jupyter-mlops-study
    restart: always
    volumes:
      - ${PWD}/data/work:/home/jovyan # 주로 코드 저장 
      - ${PWD}/data/requirements:/tmp # 필요한 python library
    ports:
      - "8888:8888"
    environment:
      - JUPYTER_ALLOW_INSECURE_WRITES=true
    networks:
      mlops_study_network:
networks:
  mlops_study_network:
    name: mlops_study_network
    external: true
  • services
    • datascience-notebook이라는 service 정의
    • hostname: 네트워크에서 컴퓨터나 장치를 식별하는 name
    • restart: always- 컨테이너가 어떤 이유로든 중지되면 자동으로 다시 시작
  • volumes
    • docker container 내에서 사용하는 파일들의 영속성 보장
    • : 기호는 mapping을 의미
  • ports
    • host(장치)에서 port 8888을 노출하고, container 내부의 port 8888에 mapping
    • host에서 localhost:8889로 접속하고 싶으면 8889:8888
  • services 내의 network
    • service가 어떤 network에 속하는지를 지정하는 부분
    • mlops_study_network 네트워크에 속하도록 지정한 것이며 _01, _02 docker network를 생성해 놓고 함께 지정하면 2개의 network 통신 가능
  • networks
    • mlops_study_network라는 network 정의
    • external: network가 외부에서 생성
      • docker create라는 명령어를 사용하여, 외부에서 사전 정의

docker-compose up명령 실행 시, jupyterlab

어느 파일 위치에 들어가서 docker-compose up 돌리느냐 중요

mariadb yml

해당 파일은 2개의 서비스 db 및 adminer(데이터베이스 관리 도구)를 정의하고 있음

version: '3'

services:
  db:
    image: mariadb:10.8.2-rc-focal
    container_name: mariadb
    hostname: mariadb-mlops-study
    volumes:
      - ${PWD}/data/mlops_table_data:/tmp
      - ${PWD}/data/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
    restart: always
    ports:
      - "3306:3306"
    environment:
      MARIADB_ROOT_PASSWORD: root
    networks:
			- mlops_study_network
  adminer:
    image: adminer
    container_name: mariadb_adminer
    hostname: adminer-mlops-study
    restart: always
    ports:
      - "8089:8080"
    networks:
      - mlops_study_network
networks:
  mlops_study_network:
    name: mlops_study_network
    external: true

DB

  • volumes
    • host system의 디렉터리를 컨테이너 내부 디렉터리애 mapping
    • mlops_table_data 디렉터리에는 실습할 데이터가 포함되어 있음. mariadb container가 생성될 때, 해당 파일의 데이터가 데이터베이스에 테이블로 적재됨
    • entrypoint-initdb는 실습에 필요한 테이블 생성, 데이터를 적재하는 스크립트 포함
  • restart: always로 컨테이너가 실패or중지되면 자동으로 다시 시작
  • ports
    • host의 port 3306을 컨테이너 내부의 port 3306에 mapping하여 외부에서도 mariadb접근
  • environment
    • 환경변수값
  • networks
    • mlops_study_network로 설정해 해당 네트워크에 서비스 연결

Adminer

  • ports
    • host의 8089를 컨테이너 내부의 port 8080에 mapping하여 외부에서도 Adminer에 접근
💡

MariaDB 데이터가 저장될 host dir에 적절한 권한이 없어서 로그인이 안 되는 오류가 발생함

host dir 권한 수정하고 이전 data 정리하고 container 재생성하여 오류 해결

출처: MLOps 구축 가이드북: 초보자를 위한 ML 모델 서빙 준비하기 - 김남기

0개의 댓글