* 구성 환경
- 온프레미스 환경에서 운영중인 MS-SQL 데이터베이스에서 백업 파일을 이관하여 로컬에 데이터베이스 환경을 구성한다.
* 사전 작업
- 기존 디비서버에서 백업을 수행한다.
- 작업 할 도커 이미지 폴더를 생성한다.
* 이미지 생성
- 구동 프로세스 : 이미지 빌드(백업파일 탑재) -> 컨테이너러닝(디비 리스토어, 계정 생성)
- 관련 파일 생성
# entrypoint.sh
#!/bin/bash
/usr/work/restore_databases.sh & /opt/mssql/bin/sqlservr
#!/bin/bash
# wait for the SQL Server to come up
sleep 90s
#run the setup script to create the DB and the schema in the DB
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "P@ssw0rd" -i /usr/work/restore.sql
# Dockerfile
FROM mcr.microsoft.com/mssql/server:2022-latest
# Create work directory
RUN mkdir -p /usr/work
WORKDIR /usr/work
# 백업 파일 복제
# Copy all scripts into working directory
COPY . /usr/work/
USER root
RUN chmod +x /usr/work/entrypoint.sh
RUN chmod +x /usr/work/restore_databases.sh
EXPOSE 1433
CMD /bin/bash /usr/work/entrypoint.sh
-- restore.sql
USE [master]
RESTORE DATABASE [데이터베이스명] FROM DISK = N'bak 파일 경로' WITH FILE = 1, MOVE N'데이터베이스명' TO N'/var/opt/mssql/데이터베이스명.mdf', MOVE N'로그명' TO N'/var/opt/mssql/로그파일명.ldf', NOUNLOAD, STATS = 5
GO
-- 계정 생성(이관) 스크립트
CREATE LOGIN [복원할데이터베이스] WITH PASSWORD = 패스워드해시 HASHED, SID = SID값, DEFAULT_DATABASE = 기본데이터베이스, CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF
* Docker build & run
docker build -t testdb:dev
docker run -it --name testdb -h testdb -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=P@ssw0rd" -p 1433:1433 -d testdb:dev
* 이미지 파일을 공유 및 받아서 로드 하는 방법
# 공유 해주기 위한 tar 파일 생성
docker save -o testdb_image.tar testdb
# 받아온 tar 파일 로드
docker load -i testdb_image.tar
# 받아온 파일이 이미지 형태로 로드 되어 있는지 확인
docker images
* (참고) 커스텀 이미지를 도커 허브에 등록 하는 방법
# 커스텀 이미지를 태깅 한다.
docker tag my_mssql:0.0 myid/my_mssql:0.0
# 도커 허브에 로그인
docker login
# 커스텀 이미지 등록 (to DockerHub)
docker push myid/my_mssql:0.0
* 참고링크
- #! <- 이표시는 뭔가?
: https://codechacha.com/ko/linux-shebang/
- MS-SQL Dockerfile 작성 참고자료
: https://towardsdatascience.com/build-a-mssql-docker-container-800166ecca21
- 도커 이미지 공유
: https://tttsss77.tistory.com/231
'Docker & Kubernetes' 카테고리의 다른 글
[Docker] GlusterFS volume-plugin 구성 (feat.CentOS7) (0) | 2023.02.08 |
---|---|
[Docker] Docker Swarm 클러스터 구축 (1) | 2022.12.26 |
[Kubernetes] Dashboard 셋업 및 외부 접속 설정 (1) | 2022.11.23 |
[Kubernetes] 클러스터 환경 구축 (0) | 2022.11.04 |
[Docker] Code-server 구축 (0) | 2022.11.04 |