10 KiB
10 KiB
ITAM 도커라이징 작업 태스크 정리
1. 문서 목적
이 문서는 ITAM 자산관리 시스템의 도커라이징 작업을 실제 실행 단위로 쪼개서 정리한 태스크 문서다.
이 문서의 목표는 아래와 같다.
- 내일까지 보여줄 시연 범위를 기준으로 우선순위를 정한다.
- 시연용 작업과 운영형 전환 작업을 분리한다.
- 개발 담당자가 바로 실행할 수 있는 체크리스트를 제공한다.
관련 배경과 구조 분석은 doc_readme.md 문서를 기준으로 한다.
현재 구현/검증 상태:
Dockerfile.frontend생성 완료Dockerfile.backend생성 완료docker-compose.yaml생성 완료.dockerignore생성 완료- WSL2 Ubuntu에서
docker compose up --build -d검증 완료 - frontend 8080 응답 확인 완료
- backend
/api/assets/master응답 확인 완료 - 현재 DB는 external MySQL 기준이며, DB 컨테이너 추가 작업은 다음 단계로 남아 있음
2. 이번 작업의 최우선 목표
이번 도커라이징의 1차 목표는 "운영 배포 완료"가 아니라 아래 상태를 재현하는 것이다.
- frontend 컨테이너가 정상 기동한다.
- backend 컨테이너가 정상 기동한다.
- backend가 기존 외부 MySQL 또는 MySQL 컨테이너에 정상 연결된다.
- 브라우저에서 화면이 열린다.
- 핵심 API 호출이 정상 동작한다.
- 업로드 저장 경로가 유지된다.
- 필요 시 DB까지 함께 포함된 재현 가능한 스택을 제공한다.
3. 작업 범위 구분
3.1 이번 시연 범위에 포함
- Dockerfile.frontend 초안 작성
- Dockerfile.backend 초안 작성
- docker-compose.yaml 작성
.dockerignore작성- MySQL 컨테이너 추가 설계
- 초기 SQL dump 또는 init SQL 적재 방식 정의
uploads볼륨 처리map_config.json영속성 처리 방식 반영- 컨테이너 기동 및 접속 확인
- 핵심 API 및 화면 확인
3.2 이번 시연 범위에서 제외
- DB 전체 마이그레이션 자동화
- nginx 기반 운영 배포 구조
- 단일 이미지 운영 구조 전환
- CI/CD 연계
4. 선행 확인 태스크
아래 태스크는 실제 Docker 파일 작성 전에 먼저 확인해야 한다.
Task 1. 외부 MySQL 접근 가능 여부 확인
- 목적: 컨테이너에서 외부 DB 접속이 가능한지 확인
- 확인 항목:
- DB_HOST 접근 가능 여부
- DB_PORT 3306 접속 가능 여부
- 계정 권한 정상 여부
- 완료 기준:
- backend 컨테이너 기준 DB 연결 에러가 발생하지 않음
Task 2. 기준 스키마 상태 확인
- 목적: 현재 앱이 요구하는 테이블 구조가 실제 DB와 맞는지 확인
- 확인 항목:
asset_coreasset_specasset_locationasset_remoteasset_historyhardware_components_masterjob_spec_standards
- 완료 기준:
/api/assets/master호출 시 쿼리 에러가 발생하지 않음
Task 3. 파일 영속성 대상 확인
- 목적: 컨테이너 재시작 이후에도 유지되어야 할 파일/폴더 식별
- 대상:
uploadsmap_config.json
- 완료 기준:
- 볼륨 설계 대상이 명확하게 문서화됨
Task 4. DB 기준 데이터 소스 확정
- 목적: MySQL 컨테이너 최초 기동 시 어떤 데이터로 초기화할지 결정
- 선택지:
- 기존 사내 DB에서 추출한 SQL dump 사용
- 정리된 스키마 SQL + seed SQL 사용
- 수동 import 절차 사용
- 완료 기준:
docker/mysql/init기준 적재 전략 또는 수동 복원 절차가 확정됨
5. 시연용 도커라이징 태스크
Task 5. 프런트 Dockerfile 작성
- 목적: Vite 개발 서버를 컨테이너에서 구동
- 작업 내용:
- Node 20 계열 이미지 사용
package*.json복사 후npm install- 8080 포트 노출
npm run dev -- --host 0.0.0.0실행
- 산출물:
Dockerfile.frontend
- 완료 기준:
- 컨테이너에서 8080 포트가 정상 listen 상태가 됨
Task 6. 백엔드 Dockerfile 작성
- 목적: Express API 서버를 컨테이너에서 구동
- 작업 내용:
- Node 20 계열 이미지 사용
package*.json복사 후npm install- 3000 포트 노출
npm run server실행
- 산출물:
Dockerfile.backend
- 완료 기준:
- 컨테이너에서 3000 포트가 정상 listen 상태가 됨
Task 7. MySQL Docker 구성 추가
- 목적: DB까지 포함한 재현 가능한 스택 구성
- 작업 내용:
mysql:8.0서비스 정의MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD설정- utf8mb4 문자셋 옵션 반영
- MySQL 데이터 volume 연결
- 초기 SQL 적재용
docker/mysql/init디렉터리 설계
- 산출물:
docker-compose.yaml내db서비스 또는 별도 DB compose 확장안
- 완료 기준:
- MySQL 컨테이너가 정상 기동하고 3306 포트에서 응답 가능
Task 8. backend DB 연결 전환
- 목적: backend가 external MySQL 대신 DB 컨테이너를 바라보도록 변경
- 작업 내용:
DB_HOST를db로 전환- 필요 시
.env.docker또는 compose 내부 환경변수 사용 - backend
depends_on에 db 추가
- 산출물:
- DB 컨테이너용 backend 환경 정의
- 완료 기준:
- backend 로그에서 DB 연결 성공 확인
Task 9. docker-compose.yaml 확장
- 목적: frontend/backend를 함께 기동
- 작업 내용:
- frontend 서비스 정의
- backend 서비스 정의
- db 서비스 정의
- 포트 매핑 추가
.env또는 docker 전용 환경변수 연결- MySQL 데이터 볼륨 연결
uploads볼륨 연결map_config.json처리 방식 반영
- 산출물:
docker-compose.yaml
- 완료 기준:
docker compose up --build한 번으로 세 서비스가 모두 올라옴
Task 10. .dockerignore 작성
- 목적: 불필요한 빌드 컨텍스트 제외
- 제외 권장 항목:
node_modulesdistbuild.gituploads*.xlsx
- 산출물:
.dockerignore
- 완료 기준:
- 이미지 빌드 컨텍스트가 과도하게 커지지 않음
6. 시연 검증 태스크
Task 11. WSL 컨테이너 기동 검증
- 실행 명령:
powershell -ExecutionPolicy Bypass -File .\start_docker_wsl.ps1
- 확인 항목:
- frontend 로그 에러 여부
- backend 로그 에러 여부
- db 로그 에러 여부
- backend와 db 연결 성공 여부
- 완료 기준:
- 세 컨테이너 모두 종료 없이 유지됨
Task 12. 웹 접속 검증
- 확인 항목:
http://localhost:8080접속 가능 여부- 첫 화면 로딩 여부
- 콘솔 에러 여부
- 완료 기준:
- 브라우저에서 초기 화면이 정상 표시됨
Task 13. API 검증
- 확인 항목:
http://localhost:3000/api/assets/master- 프런트에서
/api/assets/master호출 정상 여부
- 완료 기준:
- 200 응답 또는 정상 데이터 응답 확인
Task 14. DB 초기 데이터 검증
- 확인 항목:
- MySQL 컨테이너 내부에 목표 DB가 생성되었는지
- 기준 테이블이 존재하는지
- 샘플 데이터 또는 실데이터가 적재되었는지
- 완료 기준:
- backend가 기대하는 최소 테이블과 데이터가 실제로 조회됨
Task 15. 업로드/파일 저장 검증
- 확인 항목:
/api/upload호출 정상 여부- 업로드 파일이
uploads에 실제 저장되는지 map_config.json수정 내용이 유지되는지
- 완료 기준:
- 컨테이너 재시작 후에도 저장 데이터가 유지됨
7. 시연 후 후속 태스크
Task 16. 운영형 프런트 배포 구조 전환
- 목표: Vite dev server 대신 정적 빌드 기반 구조로 전환
- 후보:
- nginx 정적 서빙
- Express 정적 서빙
Task 17. DB 초기화/마이그레이션 전략 통합
- 목표: 기준 스키마와 실행 순서를 단일 정책으로 통일
- 필요 작업:
- 기준 스키마 선정
- 초기화 스크립트 확정
- 마이그레이션 순서 정의
Task 18. .env.example 및 배포 환경 분리
- 목표: 민감정보를 저장소에서 분리하고 배포별 설정 체계화
Task 19. 운영 볼륨 및 백업 전략 정리
- 목표: 업로드 파일과 설정 파일, MySQL 데이터의 장기 보존 정책 정리
Task 20. DB 백업/복원 절차 문서화
- 목표: 컨테이너 DB를 기준으로 dump/restore 절차를 문서화
8. 우선순위 정리
P0: 내일까지 반드시 필요한 작업
- Task 1. 외부 MySQL 접근 가능 여부 확인
- Task 2. 기준 스키마 상태 확인
- Task 4. DB 기준 데이터 소스 확정
- Task 7. MySQL Docker 구성 추가
- Task 8. backend DB 연결 전환
- Task 9. docker-compose.yaml 확장
- Task 11. WSL 컨테이너 기동 검증
- Task 12. 웹 접속 검증
- Task 13. API 검증
- Task 14. DB 초기 데이터 검증
P1: 시연 안정화를 위해 권장되는 작업
- Task 3. 파일 영속성 대상 확인
- Task 10.
.dockerignore작성 - Task 15. 업로드/파일 저장 검증
P2: 시연 이후 진행할 작업
- Task 16. 운영형 프런트 배포 구조 전환
- Task 17. DB 초기화/마이그레이션 전략 통합
- Task 18.
.env.example및 배포 환경 분리 - Task 19. 운영 볼륨 및 백업 전략 정리
- Task 20. DB 백업/복원 절차 문서화
9. 개발자용 최종 작업 순서 제안
개발 담당자에게는 아래 순서로 진행하라고 전달하면 된다.
- 외부 DB 연결 가능 여부부터 확인
- 현재 DB 스키마가 앱 요구사항과 맞는지 확인
- DB 기준 dump 또는 init SQL 확보
- MySQL 컨테이너 구성 추가
- backend의 DB 연결 대상을
db로 전환 - WSL에서
docker compose config확인 - WSL에서 컨테이너 기동 테스트
- 웹 접속 및 API 확인
- 업로드 및 파일 영속성 확인
- 시연 완료 후 운영형 구조로 분리 작업 진행
10. 완료 판단 기준
이번 도커라이징 1차 작업은 아래 조건을 만족하면 완료로 본다.
docker compose up --build로 프런트, 백엔드, DB가 모두 기동한다.- 브라우저에서 8080 화면이 열린다.
/api/assets/master가 정상 응답한다.- backend가 DB 컨테이너와 정상 연결된다.
- DB 초기 테이블과 데이터가 기대 상태로 적재된다.
uploads,map_config.json, MySQL 데이터가 재시작 후에도 유지된다.
이 문서는 실제 구현 작업의 체크리스트로 사용한다.