당신의 소스 오픈 프로젝트는devcontainer가 필요합니다. 이유는 다음과 같습니다.

TL;박사: 지금 당신의 프로젝트에 devcontainer을 추가하면 나중에 저에게 감사할 거예요.
마이크로소프트에 가입하기 전에 저는 컨설턴트였기 때문에 몇 달마다 새로운 개발팀에 가입하여 새로운 입문... 기계 설정의 무서운 임무를 맡았습니다.우리들 중 많은 사람들이 그곳에 간 적이 있다. 당신은 개발 환경을 정확하게 설정하기 위해 위키 페이지를 가지고 있다. 그렇지 않으면 예상대로 일을 할 수 없을 것이다.
요 며칠 나는 비슷한 일을 했지만 고객에게 맡기지 않고 시작된 환매 협의에 뛰어들어 사방을 탐색하고 빠른 입문을 시도하거나 공헌을 했다. XKCD가 가장 잘 말했을 것이다.

지역 사회로서, 우리는 개성을 경축한다. 당신이 선택한 축소 스타일, 실과 npm, pnpm, 벨벳 규칙, 모노페오 도구 등등. 이것은 완전히 당신이 OSS 프로젝트 관리자로서 결정되지만, 외부자로서, 이것은 좀 어려울 수 있다.누군가가 당신의 환매 협의에 왔을 때, 그들은 하나의 과정을 겪을 것이다. 우선 그들은 README 파일에서 "어떤 버전의 Node/dotnet/Python/etc가 필요합니까?"라는 설명을 찾고 설정할 것이다."어떤 패키지 관리자를 사용하고 있습니까?""모든 의존항을 어떻게 설치합니까?"잠깐만요.만약 이 점을 하지 못한다면, CONTRIBUTING.md 파일이든, 비키의 페이지든, 이것은 그들이 시작하는 데 도움을 줄 공헌자 안내서를 발굴해야 한다.
이 모든 것이 효과적으로 효과를 발휘할 수 있도록 장애가 생기기 시작했다.잘못된 버전의dotnet이 있으면 컴파일할 수 없습니다.linter/formatter를 사용하면 PR이 코드 스타일 매뉴얼에 맞지 않을 수 있음을 의식하지 못했습니다.비록 관리자로서 이런 홍보를 처리하는 것은 낙담스럽지만, 그들이 처음에 몰랐던 일을 다시 해야만 하는 공헌자에게도 마찬가지다.

개발자 표준화 환경 사용


이것이 바로 dev devcontainers의 용무지다.VS Code Remote Containers 확장은 devcontainer를 사용하여 Docker 컨테이너를 만들어 개발합니다.
Docker에 개발 환경이 있기 때문에 Dockerfile 을 제공해야 합니다. VS 코드는 이미지를 구축하고 용기를 시작합니다.그리고 Dockerfile을 제어하기 때문에 프로젝트에 필요한 모든 소프트웨어를 설치하고 정확한 노드 버전을 설정하며 전역 패키지를 설치할 수 있습니다.
이것은 일반적인 이전 버전인 Dockerfile입니다. 표준 Docker 도구를 사용하여 VS 코드를 사용하지 않고 그것을 실행하고 볼륨을 불러올 수 있습니다. 그러나 devcontainers.json 파일과 결합해서 사용하면 그 위력이 나타납니다. 이 파일은 VS 코드에 자신을 설정하는 방법을 설명합니다.
eslint+prettier를 사용하시겠습니까?사용자가 이 확장자를 설치할 수 있도록 devcontainer에 이 확장자를 설치하라고 알려 줍니다.기본적으로 VS 코드 설정을 사용하려면 사용자가 알 필요가 없도록 지정하십시오.

devcontainer 만들기


VS 코드와 Docker를 설치하고 원격 컨테이너 확장을 위해 Remote Extensions pack을 설치해야 합니다.
명령pallette(CTRL/CMD + SHIFT + P)를 열고 원격 용기를 검색합니다: 개발 용기 프로필을 추가합니다.이 명령은 가능한 devcontainer 목록을 제공합니다. 이 목록을 선택하고 사용할 수 있습니다. (pro tip, here으로 정의됨). 원하는 것을 선택하십시오.
VS 코드는 devcontainer를 검사하고 열 지 여부를 묻습니다. 필요한 파일을 변경할 때까지 기다릴 수 있습니다.
이것은 .devcontainer 폴더와 선택한 용기 (Dockerfiledevcontainer.json일 수도 있지만 보조 스크립트를 추가할 수도 있습니다) 를 기반으로 하는 시작 파일을 추가합니다.이 블로그의 버전은 here입니다. 만약에 Dockerfile을 보면 Dotnet과 node를 설정하는 것 외에 아무런 작용이 없습니다. 버전은 devcontainer.json 파일에서 지정됩니다.Docker가 어떤 소프트웨어가 필요하든지 개발 환경에 필요한 절차를 계속 추가합니다.
이어서 devcontainer.json 파일을 열면 VS 코드를 시작할 때가 되었다.devcontainer에 이름 (나는 Aaron's blog이라고 부른다) 을 붙이고 기본적으로 설치할 확장자를 설정합니다.나는 내 블로그에prettier를 사용하여 가격 인하 형식을 설정하기 때문에, 나는 그것을 설치하고 맞춤법 검사 플러그인을 설치할 것을 확보할 것이다.
{
    "name": "Aaron's blog",
    "extensions": [
        "ms-dotnettools.csharp",
        "dbaeumer.vscode-eslint",
        "esbenp.prettier-vscode",
        "editorconfig.editorconfig",
        "streetsidesoftware.code-spell-checker"
    ]
    // snip
}
devcontainer.json 파일에서 다른 컨텐츠를 구성할 수도 있습니다.예를 들어 웹 서버가 있다면 포트를 공개했다고 알려줄 수 있다.또 다른 편리한 옵션은 postCreateCommand입니다. 용기가 시작된 후에 명령을 실행할 수 있습니다. 예를 들어 npm install입니다. 누군가가 일을 시작하면 모든 것이 준비됩니다.
모든 파일이 준비된 후에, 우리는 창을 다시 불러올 수 있습니다. (명령Pallette->Developer: Reload Window) 용기를 열 때 이 알림을 누르면devcontainer를 열 수 있습니다.
또한 Dockerfile 또는 devcontainer.json VS 코드를 변경할 때마다 이 코드가 감지되고 환경을 다시 만들 것인지 묻기 때문에 동기화를 유지합니다.

결론


Devcontainers는 매우 훌륭합니다. Docker에서 독립된 개발 환경을 정의할 수 있습니다. 이 환경에는 우리가 필요로 하는 모든 것이 설치되어 있고 우리가 필요로 하는 것만 설치되어 있습니다.이것은 사람들이 새로운 코드 라이브러리에 들어가는 과정을 간소화하는데 도움이 된다. 왜냐하면 일을 시작하기 전에 무엇을 설정해야 하는지 알 수 없는 장애를 없애기 때문이다.OSS의 관점에서 이 점을 논의했지만 같은 모델도 회사 내 프로젝트에 적용될 수 있다.Dockerfile을 운송할 필요도 없고, devcontainer.json을 Docker 이미지에 가리키며 처리 과정을 가속화할 수 있다.
따라서 우리는 사람들에게 스크립트화된 환경을 제공하여 코드 라이브러리에 쉽게 들어갈 수 있도록 합니다!

추가 힌트 - GitHub 코드 공간 사용


본문을 작성할 때 GitHub Codespaces은 개인 미리보기에 있기 때문에 방문을 요청하거나 공개적으로 사용할 수 있기를 기다려야 합니다.
GitHub repo에 devcontainer가 있으면 GitHub 코드 공간을 열 때 이 정의를 사용합니다.이건 정말 대단한데, 내가 이걸 공정하게 할 수 있을 거라고 생각하진 않아, 반대로 내 동료가 자랑하려고 만든 이 영상을 봐.그는 그야말로 자신의 흥분을 억제할 수 없었다.
RabbitMQ 같은 도구를 실행하는 프로젝트로 이동할 수 있지만, 개발 환경이 스크립트를 작성했기 때문에 설치/설정/등을 확보할 필요가 없습니다.
네, 저는 이것이 매우 괜찮다고 생각합니다.

좋은 웹페이지 즐겨찾기