Github Packages를 Docker Registory로 사용

tl;dr


  • Github Packages 는 Docker Registry 로서 이용할 수 있어 리포지토리와 같은 권한 관리를 할 수 있어 편리하다.
  • 태그는 docker.pkg.github.com/USER/REPOSITORY/IMAGE:TAG 이며, 리포지토리에 복수의 이미지를 등록할 수 있다.
  • 공개 저장소라도 액세스 토큰을 등록해야합니다. docker login https://docker.pkg.github.com -u <User Name> --password <Access Token>

  • 실제로 어떤 느낌이 되는지



    Github Packages를 사용하면 아티팩트 리소스 관리가 Github Repository 관리와 일치하므로 매우 유용합니다.
    Github Packages는 Docker Registry로도 사용할 수 있는 기능을 가지고 있습니다.
    즉, Github Repository의 권한 관리의 Docker Registry로 사용할 수 있다.

    다음과 같은 이미지 이름의 docker registry로 사용할 수 있습니다. 리포지토리에 여러 이미지를 저장할 수 있습니다.
    docker.pkg.github.com/USER/REPOSITORY/IMAGE:TAG




    로컬 docker 명령과 함께 사용



    docker 명령으로 github package에 액세스하려면 공개 저장소의 공개 패키지라도 Personal Access Token을 사용하여 로그인해야합니다.
    또한 Personal Access Token에는 다음 권한이 필요합니다.
  • docker pull 하는 경우 "read:packages"
  • docker push 할 경우 "write:packages"

  • 다음 명령으로 로그인합니다.
    docker login https://docker.pkg.github.com -u 74th --password <Access Token>
    

    이 리포지토리의 nginx 예제
    docker run --rm -it -p 80:80 docker.pkg.github.com/74th/try-github-container-registry/nginx:latest
    

    Github Action으로 빌드하기


    ${{ secrets.GITHUB_TOKEN }} 에서 액세스 토큰을 얻을 수 있으므로, 이것을 사용하도록 Build and push Docker images 의 Github Action 를 짜 합니다.
    name: docker-build
    
    on:
      push:
        branches:
          - master
    
    jobs:
      build:
        name: build
        runs-on: ubuntu-20.04
        steps:
          - name: Checkout code
            uses: actions/checkout@v2
    
          - name: Build and push Docker images
            uses: docker/[email protected]
            with:
              registry: docker.pkg.github.com
              username: 74th
              password: ${{ secrets.GITHUB_TOKEN }}
              dockerfile: ./Dockerfile
              repository: 74th/try-github-container-registry/nginx
              tags: latest
    

    좋은 웹페이지 즐겨찾기