Docker를 사용하는 3가지 이유(Kentico 경험 있음)

소개하다.


그 이후로NET Core가 발표했습니다.우리가 합작한 켄티코 CMS가 의존하기 때문에 일상적인 업무에서 나는 아직 기회가 없다.NET 프레임워크, Docker에서 실행하는 것은 큰 도움이 되지 않습니다.
다행히도 새로운 버전의 Kentico, 현재의 Kentico Xperience 13이 등장했습니다.NET 핵심 지원!🎉 이 문서에서 Kentico Experience 13을 사용하여 Docker를 설정하는 방법과 Docker를 사용하는 장점을 보여 드리겠습니다.

Docker란?


Docker는 응용 프로그램을 개발, 배치 및 실행하는 플랫폼입니다.Docker는 응용 프로그램을 기본 인프라와 분리하므로 호스팅 환경을 구성할 필요가 없습니다.대부분의 개발자들이 실제로는 이렇게 하는 것을 좋아하지 않기 때문에 이것은 나에게 있어서 매우 큰 장점이다.Hyper-V와 같은 가상화 기술에 의존하지만 대부분의 가상화 기술보다 빠르고 좋은 최적화가 많다.

Docker의 건물


Docker의 아키텍처는 여러 주요 요소로 구성됩니다.

📷 이미지


이미지는 기본적으로 컨테이너를 만드는 방법에 대한 설명입니다.대다수 때 당신은 다른 이미지로 자신의 이미지를 만들어 낸다.이 방면의 좋은 예는NET 핵심 SDKDocker 이미지를 만들 때NET 핵심 응용 프로그램, SDK 이미지를 참조하여 응용 프로그램을 구성합니다.이렇게 하면 이미지에 SQL Server를 추가할 수도 있습니다.

📦 용기.


컨테이너는 Docker 호스트에서 실행할 수 있는 이미지의 예입니다.용기와 호스트 시스템 분리;기본적으로 그들은 자신의 네트워크를 가지고 있어서 외부에서 그들에게 연락할 수 없다.그것들도 자신의 파일 저장을 가지고 있다.

📜 등기소


그림을 만든 후 등록표로 밀어넣어야 합니다.레지스트리는 공용 레지스트리(예: Dockerhub)일 수도 있고 회사의 개인 레지스트리일 수도 있습니다.

🖥️ 주인.


Docker 호스트는 레지스트리에서 이미지를 추출하여 Docker 컨테이너에서 실행할 수 있습니다.Docker 호스트는 Windows 또는 Linux일 수 있으며 이를 통해 실행할 수 있습니다.Linux에 있는 NET 커널의 응용 프로그램
우리의 대부분 사이트는 Azure 응용 서비스에서 위탁 관리하는데 주로 Premium V2층에 있다.Windows와 Linux 어플리케이션 서비스의 가격을 비교할 때 차이가 매우 큽니다.P2V2 응용 프로그램 서비스의 비용은 Windows에서 매달 246유로, Linux에서 매달 142유로 정도이다.57% 감소😱. 모든 가격은 App Service pricing 참조.
리눅스 응용 프로그램은 원가를 낮추는 것 외에 또 다른 장점이 있다.나 같은 개발자들은 응용 프로그램의 속도가 빠르고 성능을 계속 향상시키려고 노력한다.만약 내가 너에게 리눅스가 너에게 커다란 성능 향상을 주었다고 말한다면?로베르토 프레바토(Roberto Prevato)는 리눅스와 Windows가 Azure 어플리케이션 서비스에서의 성능에 관한 기사post를 썼다.결과는 어떻습니까?Linux의 초당 처리 요청량은 Windows의 두 배이며 응답 시간은 약 Windows의 절반이다.Linux가 Windows보다 빠르다는 것은 알지만, 이렇게 빠릅니까?정말!🚀

🧬 Docker 워크플로우


네.우리는 이미 Docker 체계 구조의 기본 지식을 소개했지만, 이 모든 것을 어떻게 결합시켰을까?어디 보자.
  • 우선 애플리케이션에 대한 이미지를 만들어야 합니다.
  • 그리고 이 그림을 등록표에 발표해야 합니다.
  • Docker 호스트에서 이 이미지를 레지스트리에서 추출하여 컨테이너에서 실행해야 합니다.
  • 이렇게!이렇게 많은 부품이 관련되어 있기 때문에 복잡하게 들리지만, 다행히도, VisualStudio는 로컬 기기에서 그것을 실현하기 쉽게 한다.😎

    칸디코 나루터 경험치 13


    우리 일을 시작합시다🔨 Docker에서 Kentixo Experience 13을 실행하십시오!
    Visual Studio 2019 및 SQL Server가 컴퓨터에 설치되어 있다고 가정합니다.그러니까 아직 없으면 해!🔗

    Kentico 설치


    우선, 우리는 downloadKentico 13 Xperience와 installit에 대해 시험을 진행해야 한다.반드시 선택해야 한다.NET 커널을 개발 모델로 삼아 댄싱 염소를 설치하다🐐 세 번째 단계의 예시 사이트.

    예제 사이트 실행


    그래서 저희가 지금 다 설치했어요!Visual Studio 솔루션이 열립니다.NET 핵심 웹 사이트(Dancing Goat Core.sln)를 실행하십시오.만일 모든 것이 순조롭다면, 너는 마땅히 춤추는 것을 보러 가야 한다🕺 염소 샘플 지점:

    Docker 설치


    현재 우리는 Dancing Goat 사이트를 운영하고 있으며 설치할 수 있다Docker Desktop.이것은 로컬 이미지 레지스트리와 호스트이며 Docker 컨테이너를 실행할 수 있습니다.

    이미지를 창조하다


    자, 우리 Docker를 도망가게 하자.다음 단계에서는 응용 프로그램에 대한 Docker 이미지를 만듭니다.Docker 파일을 사용하여 이미지를 어셈블할 수 있으며, Docker는 Docker 파일을 사용하여 이미지 생성 명령 세트를 사용합니다.
    다행히도 Microsoft 직원들은 VisualStudio에서 Docker 이미지를 쉽게 만들 수 있도록 해 주었습니다.🙌.
    DancingGoatCore 항목을 마우스 오른쪽 버튼으로 클릭하고 추가 를 클릭한 다음 Docker 지원 을 클릭합니다.

    운영 체제(OS)로 Windows를 선택하고 OK 를 누릅니다.프로젝트의 루트 디렉토리에 Dockerfile이 만들어집니다.이 Dockerfile은 다음 네 단계로 구성됩니다.

    1. 기지


    FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
    WORKDIR /app
    EXPOSE 80
    
    Docker 컨테이너의 런타임을 설정합니다.이런 상황에서NET 코어가 실행되는 동안그것은 마이크로소프트에서 이를 실현하기 위해 Docker 이미지를 추출했다.기본적으로 Docker 컨테이너의 네트워크는 외부에서 액세스할 수 없습니다.이것은 웹 응용 프로그램이기 때문에 포트 80은 공개적으로 접근할 수 있습니다.

    2.건조


    FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
    WORKDIR /src
    COPY ["DancingGoatCore/DancingGoatCore.csproj", "DancingGoatCore/"]
    RUN dotnet restore "DancingGoatCore/DancingGoatCore.csproj"
    COPY . .
    WORKDIR "/src/DancingGoatCore"
    RUN dotnet build "DancingGoatCore.csproj" -c Release -o /app/build
    
    사용하다.NET 핵심 SDK 이미지이것은 이 점을 실현하기 위해 자주 사용하는dotnetbuild 명령을 사용합니다.

    3. 출판


    FROM build AS publish
    RUN dotnet publish "DancingGoatCore.csproj" -c Release -o /app/publish
    
    dotnet publish 명령을 실행합니다.NET 핵심 SDK

    4. 결승전


    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "DancingGoat.dll"]
    
    Docker가 이를 실행하는 방법을 알 수 있도록 이미지의 엔트리 포인트를 만듭니다.

    이미지 구축 및 운영


    지금은 용기에서 이미지를 구축하고 실행할 때입니다🤩! Docker는 명령줄 도구이기 때문에 보통 두 가지 명령을 호출해야 합니다. 하나는 이미지를 구축하고 발표하는 데 사용되고, 다른 하나는 그림을 실행하는 데 사용됩니다.Visual Studio는 다음과 같은 편리한 시작 구성을 제공합니다.

    그것을 선택하고 프로그램을 실행하십시오!

    읊다, 읊조리다일시 정지😅 Visual Studio의 예외는 다음과 같습니다.
    CMS.DataEngine.ApplicationInitException: 'A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 0 - No connection could be made because the target machine actively refused it.)'
    
    응용 프로그램이 데이터베이스에 접근할 수 없을 것 같습니다💾

    데이터베이스를 정상적으로 작동


    내가 전에 Docker 용기는 호스트와 격리되어 있다고 설명한 것을 기억한다. 설령 그것이 네트워크라고 해도?Dockerfile에서 웹 서버에 포트 80을 공개했습니다.하지만.컨테이너가 로컬 컴퓨터에서 실행 중인 SQL Server에 액세스할 수 없으므로 예외가 발생합니다.
    이를 위해서는 정확한 포트인 1433을 SQL Server에서 사용하는 컨테이너에 공개해야 합니다.Dockerfile로 돌아가 다음과 같은 행을 추가합니다.
    EXPOSE 1433
    
    Dockerfile을 저장하고 응용 프로그램을 다시 실행합니다.이번에는 쓸모가 있을 거야, 그렇지 않아?🤔
    아니, 또 한 번의 타임...내가 처음으로 Docker에서 Kentico Experience를 실행하려고 시도했을 때, 나는 무엇이 그것을 초래했는지 정말 발버둥쳤다.Docker 이미지의 포트가 정상적이고 SQL Server가 실행 중입니다. 왜요?
    기본적으로 SQL Server는 포트 1433에서 외부 트래픽을 모두 차단합니다.이 문제를 해결할 때가 됐어!
    우선, appsettings에서 CMSconnectionString을 수정해야 합니다.json 파일. 따라서 데이터 원본은 기계의 로컬 IP 주소이고 뒤에 현식 포트가 있습니다.
    192.168.xxx.xxx,1433
    
    다음은 Windows Defender의 포트 1433을 통해 통신할 수 있도록 허용해야 합니다.TCP 트래픽이 포트 1433을 통과하도록 인바운드 규칙을 생성합니다.
    마지막으로 SQL Server 설정을 조정해야 합니다.Ctrl+R 키를 누르고 compmgmt 를 실행합니다.이학 석사.왼쪽 메뉴에서 다음 특정 항목으로 이동합니다.

    중간 TCP/IP를 마우스 오른쪽 버튼으로 클릭하고 Enabled를 Yes로 설정합니다.같은 창에서 IP 주소 탭을 선택하여 IPAll 그룹을 찾고 TCP 포트를 1433으로 설정합니다.

    OK 를 누르고 신속하게 시스템 재부팅🔌.
    기계가 재부팅되면 앱을 다시 시작하고 잠시 기다리면 댄싱 갓 웹사이트에서 다시 환영받을 거예요💪🏼
    새 팀 구성원이 설치 지침을 따르더라도 응용 프로그램을 실행할 수 없다는 문제를 겪은 적이 있습니까?Docker가 있으면 이 설정의 상당 부분을 그림으로 처리합니다.옛것을 따르다.NET Core SDK는 포트, 파일 시스템 구성 및 환경 변수를 공개합니다.그가 해야 할 일은 Docker Desktop을 설치하고 응용 프로그램과 Docker 파일을 포함하는 Git 저장소를 보고 구축하는 것이다.어, SQL Server 설정도 구성할 수 있습니다.😇 하지만 정말, 이렇게!다시는 이런 일로 발버둥치지 마라.NET Core 버전, IIS 설정 또는 파일 시스템 권한👍

    💡 Docker를 사용하는 3가지 이유(Kentico 경험 있음)


    Docker가 무엇인지, Kentico Experience 13 웹 사이트에서 설정하는 방법에 대해 잘 알고 있습니다.나는 네가 나와 마찬가지로 케디코의 13년 경험에 대해 흥분하길 바란다.NET 핵심 지원은 Docker를 사용하는 등 더 많은 가능성을 제공하기 때문입니다.
    Docker를 사용하는 것은 기존 개발에 비해 많은 이점이 있지만 팀 또는 고객에게 가장 큰 영향을 미치는 이유는 다음과 같습니다.
    ✔️ Azure의 Linux 환경에서 Docker 컨테이너를 실행하면 비용을 50% 이상 절감할 수 있습니다.💰📉
    ✔️ Azure의 Linux 어플리케이션 서비스 속도는 1초에 두 배의 요청 처리📈
    ✔️ 새로운 팀원들의 구성 속도가 훨씬 빠르다
    관심 가져주셔서 감사합니다. Docker의 즐거움을 체험하세요!📦

    좋은 웹페이지 즐겨찾기