Data-Driven System Development 134

GitLab Docker 설정에서 $GITLAB_HOME은 호스트일까? 컨테이너일까?

Docker로 GitLab을 설치할 때 docker-compose.yml 파일 안에서 가장 헷갈리는 부분 중 하나는 바로 volumes 설정입니다.volumes: - '$GITLAB_HOME/config:/etc/gitlab' 이 구문을 보면 "GitLab을 호스트로 보는 건가?", "GitLab이 컨테이너인데 왜 이렇게 연결하지?" 같은 의문이 생길 수 있어요. 이 글에서는 그 구조를 직관적으로 이해할 수 있도록 정리해볼게요. 볼륨(volume)이란?Docker에서 볼륨은 호스트와 컨테이너 사이의 파일 공유 공간입니다.컨테이너가 생성되고 삭제돼도, 데이터는 **호스트의 볼륨에 남기 때문에 영속성(persistence)**을 유지할 수 있어요. $GITLAB_HOME/config:/etc/gitlab ..

GitLab Docker에서 포트 설정이 중요한 이유 – 포트 매핑 완벽 이해하기

GitLab을 Docker Compose로 실행할 때 docker-compose.yml 안에서 반드시 설정해야 하는 부분 중 하나가 바로 ports:입니다. 단순히 컨테이너를 실행한다고 끝나는 것이 아니라, 컨테이너 내부의 서비스를 외부에서 접근 가능하도록 "열어줘야" 하거든요. 포트 매핑(port mapping)이란?컨테이너는 기본적으로 호스트(서버 또는 내 PC)와 분리된 가상 네트워크 안에서 실행됩니다.이 말은 곧, 컨테이너 안에서 GitLab이 80, 443, 22 포트를 사용하고 있어도외부에서는 그 포트에 접근할 수 없다는 뜻이에요.그래서 필요한 게 바로 **포트 매핑(port mapping)**입니다. 포트 매핑 예시ports: - "80:80" - "443:443" - "22:22" ..

환경변수는 파라미터처럼 동작한다 — GITLAB_OMNIBUS_CONFIG 이해하기

Docker로 GitLab을 실행할 때 자주 보게 되는 설정 중 하나가 바로 GITLAB_OMNIBUS_CONFIG입니다.이 환경변수는 마치 함수에 파라미터를 전달하듯,컨테이너 내부 GitLab 인스턴스에 설정 값을 외부에서 넘겨주는 역할을 합니다. 환경변수는 파라미터처럼 동작한다Docker에서 컨테이너를 실행할 때 environment: 항목을 통해 환경변수를 지정할 수 있습니다.이 값들은 컨테이너 내부의 앱이나 서비스가 실행될 때 설정 값 또는 조건처럼 사용됩니다.environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://gitlab.example.com' → 이 구조는 마치 아래와 같이 함수에 인자를 전달하는 것과 유사합니다:def start_..

Docker Compose에서 container_name과 hostname의 차이점은?

Docker Compose를 사용하다 보면 container_name과 hostname이라는 두 가지 설정을 자주 마주치게 됩니다.이 둘은 얼핏 비슷해 보이지만, 용도와 적용 범위가 완전히 다른 설정입니다. 이 글에서는 두 설정의 차이를 간단히 정리해보겠습니다. container_name이란?container_name은 Docker 자체가 해당 컨테이너를 식별하기 위한 이름입니다.CLI 명령어나 Docker 시스템 내부에서 사용됩니다.container_name: gitlab 예시:docker exec -it gitlab bash # 컨테이너 쉘 접속docker logs gitlab # 로그 보기 👉 이 이름은 Docker 명령어에서 컨테이너를 다룰 때 사용하는 식별자입니다..

도메인과 로컬 IP 주소의 관계

도메인(Domain)이란?도메인은 인터넷에서 어떤 컴퓨터(서버)를 사람이 읽기 쉬운 주소로 표현한 거야. 예를 들어:https://www.google.com ← 도메인사실은 → 142.250.206.78 같은 IP 주소로 연결돼📌 왜 도메인을 쓰는가?사람은 숫자(IP)보다 **단어(도메인)**를 기억하기 쉬움jupyter.mlops.io, gitlab.example.com 같은 주소를 통해 쉽게 접속 IP 주소란?IP 주소는 컴퓨터나 서버가 서로 통신할 때 사용하는 고유 주소야.인터넷 상의 “주소지” 같은 개념이야.예: 127.0.0.1 = loopback 주소 (자기 자신)192.168.0.1, 10.0.0.1 = 사설 IP142.250.206.78 = 공인 IP (예: 구글 서버) 로컬 IP 주소란..

Docker Compose란?

여러 개의 Docker 컨테이너를 정의하고 한 번에 실행/관리할 수 있게 해주는 도구 예를 들어:GitLab은 단일 컨테이너만으로는 동작하지 않고,GitLab 서버DB(PostgreSQL)Redis 등 여러 컨테이너가 필요한 경우가 많아.→ 이걸 한 줄로 다루기 위해 사용하는 게 Docker Compose 왜 사용하는가? 해당 코드 해석 (docker-compose.yml)services: gitlab: # 서비스 이름 image: gitlab/gitlab-ee:-ee.0 # 사용할 GitLab Docker 이미지 container_name: gitlab # 컨테이너 이름 restart: alway..

utils의 뜻

"utils"는 "utilities"의 줄임말→ 보조 함수들, 공통적으로 자주 쓰이는 기능들, 즉 **“유틸리티 도구 모음”**을 담은 파일 언제 utils.py를 쓰나?여러 모듈에서 공통적으로 사용할 함수, 클래스, 헬퍼 로직을 한 곳에 모아둘 때코드 중복을 줄이고, 재사용성을 높이기 위해로직과 도구성 함수를 구분하고 싶을 때 예시# utils.pydef save_json(path, data): with open(path, 'w') as f: json.dump(data, f)def seed_everything(seed: int): random.seed(seed) np.random.seed(seed)# main.py 또는 다른 모듈from utils import seed_ev..

컨벤션이란?

컨벤션(Convention)의 뜻"컨벤션"은 개발자들 사이에서 공통적으로 따르기로 한 약속이나 규칙을 말해. 즉, 필수는 아니지만 다수가 따르는 권장 표준이야. 법은 아니지만, 지키면 협업과 유지보수가 훨씬 쉬워지는 암묵적 룰이라고 보면 돼. 예시로 쉽게 이해하기 변수 이름 컨벤션# 권장 컨벤션 (PEP 8)user_name = "jihyo" # 스네이크 케이스# 지양되는 방식UserName = "jihyo" # 자바 스타일 (파이썬에서는 클래스명에 씀) 디렉토리 컨벤션❌ 나쁜 예- testcode/- codes/- main_script.py✅ 좋은 예- src/- tests/- main.py 한 줄 정의컨벤션은 "다수가 동의한 코딩 습관과 규칙"으로, 코드 스타일, 구조, 작명법 등에 적용되는..

파이썬 프로젝트 / 패키지 작명 규칙 요약

**파이썬 프로젝트나 패키지 작명에도 일정한 규칙(또는 권장 컨벤션)** 파이썬 프로젝트 / 패키지 작명 규칙 요약 예시 비교✅ 올바른 구조 예시mlopsstudy/ ← 패키지 이름 (소문자 or 스네이크)├── data_loader.py ← 모듈 (소문자 + _)├── ml_pipeline.py├── MlManager.py ← 클래스 파일이면 가능, 일반적으론 피함└── __init__.py# 내부 코드from mlopsstudy import data_loaderclass MlManager: ... 특별히 주의할 점패키지 이름은 반드시 소문자만 (import 시 ImportError 방지)MyPackage, MyLib처럼 대문자 포함된 패키지는..

entry point란?

entry point는 파이썬 패키지를 설치한 후, 터미널에서 명령어처럼 실행할 수 있도록 연결해주는 설정이다.쉽게 말해, **사용자가 직접 입력하는 명령어와 내부의 실행 함수(main)를 연결해주는 “실행 진입점”**이라고 볼 수 있어. 왜 필요한가?보통 파이썬 패키지는 import 해서 사용하는 방식이 일반적이지만, 툴처럼 설치만 하면 커맨드라인에서 곧바로 실행 가능한 패키지를 만들고 싶을 때는 명령어와 실행 함수를 연결해주는 entry point 설정이 필수야. 예를 들어:black main.py # → black 패키지의 entry point를 실행 구조 예시 (setup.py 안에서 설정)setup( ... entry_points={ 'console_scripts': ..