ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Docker] Custom image 만들기 (feat. MS-SQL)
    Docker & Kubernetes 2022. 11. 4. 08:58

    * 구성 환경

    - 온프레미스 환경에서 운영중인 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

Designed by Tistory.