본문 바로가기
Dev

로컬에서 MSSQL, GitLab, Flyway 환경을 Docker로 구성해서 실습하고 테스트할 수 있는 플래그십 예제 프로젝트

by 바람냄새 2025. 6. 25.


로컬에서 MSSQL, GitLab, Flyway 환경을 Docker로 구성해서 실습하고 테스트할 수 있는 플래그십 예제 프로젝트


🧱 전체 예제 프로젝트 구조

/db-cicd-lab/
├── docker-compose.yml
├── flyway/
│   ├── conf/
│   │   └── flyway.conf
│   └── sql/
│       └── V1__create_table_users.sql
├── .gitlab-ci.yml
├── README.md

🐳 1. docker-compose.yml

version: '3.9'

services:
  mssql:
    image: mcr.microsoft.com/mssql/server:2019-latest
    container_name: mssql
    environment:
      SA_PASSWORD: "YourStrong!Passw0rd"
      ACCEPT_EULA: "Y"
    ports:
      - "1433:1433"
    volumes:
      - mssql_data:/var/opt/mssql

  gitlab:
    image: gitlab/gitlab-ce:latest
    container_name: gitlab
    hostname: 'gitlab.local'
    ports:
      - "8080:80"
      - "8443:443"
      - "2222:22"
    shm_size: '1gb'
    volumes:
      - gitlab_config:/etc/gitlab
      - gitlab_logs:/var/log/gitlab
      - gitlab_data:/var/opt/gitlab

  flyway:
    image: flyway/flyway:latest
    container_name: flyway
    depends_on:
      - mssql
    volumes:
      - ./flyway/sql:/flyway/sql
      - ./flyway/conf:/flyway/conf
    command: -configFiles=/flyway/conf/flyway.conf migrate

volumes:
  mssql_data:
  gitlab_config:
  gitlab_logs:
  gitlab_data:

🛠 2. flyway/conf/flyway.conf

flyway.url=jdbc:sqlserver://mssql:1433;databaseName=master
flyway.user=sa
flyway.password=YourStrong!Passw0rd
flyway.baselineOnMigrate=true
flyway.locations=filesystem:/flyway/sql

🧪 3. flyway/sql/V1__create_table_users.sql

CREATE TABLE users (
    id INT PRIMARY KEY IDENTITY,
    name NVARCHAR(100),
    email NVARCHAR(100)
);

🧩 4. .gitlab-ci.yml (선택적: CI 실습용)

stages:
  - migrate

flyway_migrate:
  stage: migrate
  image: flyway/flyway:latest
  script:
    - flyway -url=jdbc:sqlserver://host.docker.internal:1433;databaseName=master -user=sa -password=YourStrong!Passw0rd -locations=filesystem:/sql migrate
  artifacts:
    paths:
      - flyway_schema_history

host.docker.internal은 CI 컨테이너가 호스트의 DB를 바라볼 때 사용하는 주소입니다 (Mac/Windows 기준)


📝 5. 사용 방법

# 1. 전체 환경 실행
docker-compose up -d

# 2. Flyway 자동 실행 확인 (로그 확인)
docker logs -f flyway

# 3. GitLab 접속: http://localhost:8080

✅ 기대 효과

항목 설명

🧪 테스트 베드 실제 운영과 유사한 구조로 Flyway + MSSQL + GitLab 테스트 가능
🔁 반복 실습 프로시저 추가/수정 시 마이그레이션 효과 확인
🧩 CI 연동 학습 GitLab CI 파이프라인 연동까지 확장 가능