공용 테스트 데이터베이스 준비
Visual Studio에서 디버깅할 때는 localhost의 데이터베이스를 사용했습니다. 이제 공용 네트워크 상에 SQL Server를 준비해야 합니다. 다음 단계를 따르세요:
-
Study.BlazorOne.DbMigrator 프로젝트를 시작 프로젝트로 설정합니다.
-
appsettings.json 파일 내의 연결 문자열을 수정합니다.
로컬 localhost 설정은 주석 처리하고, 공용 네트워크의 연결 문자열을 추가합니다.
- DbMigrator를 실행합니다.
Study.BlazorOne.Blazor 프로젝트에 Docker 지원 활성화
솔루션 루트 디렉토리에 CI/CD 자동화 구성 파일 배치
GitLab Runner로 Docker 이미지 빌드 시도
GitLab 출력 내용은 다음과 같습니다:
$ docker build -t $BLAZOR_DEV_REPO:$IMAGE_TAG -f src/Study.BlazorOne.Blazor/Dockerfile --no-cache .
Step 1/24 : FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base
...
마지막 단계에서 aspnet:7.0 기본 이미지를 다운로드하는 중 TLS 핸드셰이크 타임아웃 오류가 발생하였습니다. 이 문제를 해결하려면 자체 개인 Docker 레지스트리에 aspnet:7.0 기본 이미지를 저장하면 됩니다.
그 후, Study.BlazorOne.Blazor 프로젝트의 Dockerfile 파일을 수정하여 기본 이미지 경로를 변경합니다:
FROM myregistry.local.net/dotnet/aspnet:7.0 AS base
GitLab Runner가 자동으로 빌드를 시도하도록 코드를 커밋합니다.
자동 빌드 성공 후에도 마지막 단계에서 문제가 발생:
$ docker run -d --name blazor_one_test -p 8606:80 $BLAZOR_DEV_REPO:$IMAGE_TAG
ProGet 피드 이름이 잘못 지정되어 있는 경우입니다. Docker 이미지를 저장할 새로운 피드를 ProGet에 생성하고 .gitlab-ci.yml 파일 내 변수를 수정합니다:
variables:
DOCKER_IMAGE_URL: "proget.mydomain.com/docker/myfeed/blazor:latest"
SSH 접속 실패 문제 해결
테스트 서버에 Linux 사용자 'tommy'를 생성하고, ~/.ssh 폴더에 공개 키를 추가합니다.
다시 자동 빌드 트리거
서버에 deploy.sh 스크립트가 없어 발생한 오류를 해결하기 위해 스크립트를 복사하고 권한을 변경합니다:
chmod +x /home/gitlab-runner/scripts/deploy.sh
GitLab Runner 재시작 및 작업 수락 확인
다음 명령어를 통해 GitLab Runner의 상태를 확인하고 재시작합니다:
docker exec -it gitlab-runner gitlab-runner verify
docker exec -it gitlab-runner gitlab-runner restart
최종적으로 새 테스트 서버로 전환하여 성공적인 배포 완료
docker run -d --privileged=true --restart=always -d --name blazor_one_test -v /mnt/data/config:/var/config -e ASPNETCORE_ENVIRONMENT=Production -p 8606:80 proget.mydomain.com/study-images/blazor:latest