로컬에서 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 파이프라인 연동까지 확장 가능 |
'Dev' 카테고리의 다른 글
푸시한 커밋을 특정시점으로 안전하게 되돌리기 (0) | 2025.07.07 |
---|---|
Java 힙 덤프 자동화: jcmd와 쉘 스크립트로 OOM 문제 진단하기 (0) | 2025.06.26 |
윈도우에 Git 설치 - Git 사용(1/5) (0) | 2019.08.26 |