[{"data":1,"prerenderedAt":1134},["ShallowReactive",2],{"Categories":3,"NavIndexCategoriesCountFooter":203,"content-\u002F2025\u002F09\u002F17\u002Fmoving-from-dockerhub-to-github-container-repository\u002F":204},[4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,68,70,71,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202],{"category":5},"System Administration",{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":27},"Software Development",{"category":5},{"category":5},{"category":5},{"category":5},{"category":27},{"category":27},{"category":5},{"category":5},{"category":5},{"category":27},{"category":5},{"category":5},{"category":5},{"category":27},{"category":27},{"category":27},{"category":27},{"category":5},{"category":5},{"category":5},{"category":27},{"category":27},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":5},{"category":27},{"category":5},{"category":5},{"category":27},{"category":27},{"category":27},{"category":27},{"category":5},{"category":27},{"category":27},{"category":67},"Drones & RC",{"category":69},"DIY Projects",{"category":67},{"category":72},"Photography",{"category":69},{"category":69},{"category":69},{"category":67},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":69},{"category":67},{"category":69},{"category":69},{"category":67},{"category":67},{"category":72},{"category":72},{"category":72},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":5},{"category":5},{"category":72},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":5},{"category":67},{"category":67},{"category":72},{"category":72},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":67},{"category":72},{"category":67},{"category":138},"3D Printing - Laser Cutting - CNC",{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":138},{"category":5},{"category":138},{"category":27},{"category":27},{"category":138},{"category":138},{"category":72},{"category":158},"Photography,3D Printing - Laser Cutting - CNC",{"category":27},{"category":27},{"category":69},{"category":27},{"category":27},{"category":27},{"category":27},{"category":5},{"category":67},{"category":5},{"category":5},{"category":27},{"category":27},{"category":27},{"category":27},{"category":27},{"category":69},{"category":27},{"category":27},{"category":27},{"category":27},{"category":181},"Home Assistant",{"category":181},{"category":72},{"category":27},{"category":27},{"category":72},{"category":138},{"category":5},{"category":72},{"category":72},{"category":138},{"category":27},{"category":181},{"category":181},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},{"category":72},191,{"id":205,"title":206,"body":207,"category":1119,"date":1120,"description":213,"embedImage":1119,"extension":1121,"image":1119,"intro":1122,"meta":1123,"navigation":296,"path":1124,"seo":1125,"series":1119,"sitemap":1126,"stem":1127,"tags":1128,"__hash__":1133},"content\u002F2025\u002F09\u002F17\u002Fmoving-from-dockerhub-to-github-container-repository.md","Moving from dockerhub to github container repository",{"type":208,"value":209,"toc":1106},"minimark",[210,214,217,231,236,241,244,247,250,464,468,471,474,506,509,646,650,653,656,732,736,739,743,750,754,825,829,832,837,848,851,854,897,900,948,952,962,966,969,972,1059,1062,1089,1097,1102],[211,212,213],"p",{},"I've had a minimum cost paid dockerhub subscription for a long while - just to be able to have private repositories.",[211,215,216],{},"I received an e-mail bumping that from $5 to $11 a month - and adding a lot of stuff I don't want or need.",[211,218,219,220,230],{},"So - let's try moving stuff to github's container repository - ",[221,222,229],"a",{"href":223,"rel":224,"target":228},"https:\u002F\u002Fghcr.io\u002F",[225,226,227],"nofollow","noopener","noreferer","_blank","ghcr.io",".",[232,233,235],"h2",{"id":234},"updating-build-scripts","Updating build scripts",[237,238,240],"h3",{"id":239},"existing-dockerhub-setup","Existing dockerhub setup",[211,242,243],{},"All the code was built on github already.",[211,245,246],{},"First - dockerhub username and PAT token were added as secrets to the github repository.",[211,248,249],{},"Then - the build action looked like this:",[251,252,257],"pre",{"className":253,"code":254,"language":255,"meta":256,"style":256},"language-yaml shiki shiki-themes github-dark","      - name: Set up QEMU\n        uses: docker\u002Fsetup-qemu-action@v3\n\n      - name: Set up Docker Buildx\n        uses: docker\u002Fsetup-buildx-action@v3\n\n      - name: Login to dockerhub\n        uses: docker\u002Flogin-action@v3\n        with:\n          username: $DOCKERHUB_USERNAME\n          password: $DOCKERHUB_TOKEN\n\n      - name: Build and push\n        uses: docker\u002Fbuild-push-action@v6\n        with:\n          context: .\n          platforms: linux\u002Famd64,linux\u002Farm64\n          push: true\n          tags: |\n            ${{ github.repository_owner }}\u002F\u003Cproject_name>:latest\n","yaml","",[258,259,260,280,291,298,310,320,325,337,347,356,367,378,383,395,405,412,424,435,446,458],"code",{"__ignoreMap":256},[261,262,265,269,273,276],"span",{"class":263,"line":264},"line",1,[261,266,268],{"class":267},"s95oV","      - ",[261,270,272],{"class":271},"s4JwU","name",[261,274,275],{"class":267},": ",[261,277,279],{"class":278},"sU2Wk","Set up QEMU\n",[261,281,283,286,288],{"class":263,"line":282},2,[261,284,285],{"class":271},"        uses",[261,287,275],{"class":267},[261,289,290],{"class":278},"docker\u002Fsetup-qemu-action@v3\n",[261,292,294],{"class":263,"line":293},3,[261,295,297],{"emptyLinePlaceholder":296},true,"\n",[261,299,301,303,305,307],{"class":263,"line":300},4,[261,302,268],{"class":267},[261,304,272],{"class":271},[261,306,275],{"class":267},[261,308,309],{"class":278},"Set up Docker Buildx\n",[261,311,313,315,317],{"class":263,"line":312},5,[261,314,285],{"class":271},[261,316,275],{"class":267},[261,318,319],{"class":278},"docker\u002Fsetup-buildx-action@v3\n",[261,321,323],{"class":263,"line":322},6,[261,324,297],{"emptyLinePlaceholder":296},[261,326,328,330,332,334],{"class":263,"line":327},7,[261,329,268],{"class":267},[261,331,272],{"class":271},[261,333,275],{"class":267},[261,335,336],{"class":278},"Login to dockerhub\n",[261,338,340,342,344],{"class":263,"line":339},8,[261,341,285],{"class":271},[261,343,275],{"class":267},[261,345,346],{"class":278},"docker\u002Flogin-action@v3\n",[261,348,350,353],{"class":263,"line":349},9,[261,351,352],{"class":271},"        with",[261,354,355],{"class":267},":\n",[261,357,359,362,364],{"class":263,"line":358},10,[261,360,361],{"class":271},"          username",[261,363,275],{"class":267},[261,365,366],{"class":278},"$DOCKERHUB_USERNAME\n",[261,368,370,373,375],{"class":263,"line":369},11,[261,371,372],{"class":271},"          password",[261,374,275],{"class":267},[261,376,377],{"class":278},"$DOCKERHUB_TOKEN\n",[261,379,381],{"class":263,"line":380},12,[261,382,297],{"emptyLinePlaceholder":296},[261,384,386,388,390,392],{"class":263,"line":385},13,[261,387,268],{"class":267},[261,389,272],{"class":271},[261,391,275],{"class":267},[261,393,394],{"class":278},"Build and push\n",[261,396,398,400,402],{"class":263,"line":397},14,[261,399,285],{"class":271},[261,401,275],{"class":267},[261,403,404],{"class":278},"docker\u002Fbuild-push-action@v6\n",[261,406,408,410],{"class":263,"line":407},15,[261,409,352],{"class":271},[261,411,355],{"class":267},[261,413,415,418,420],{"class":263,"line":414},16,[261,416,417],{"class":271},"          context",[261,419,275],{"class":267},[261,421,423],{"class":422},"sDLfK",".\n",[261,425,427,430,432],{"class":263,"line":426},17,[261,428,429],{"class":271},"          platforms",[261,431,275],{"class":267},[261,433,434],{"class":278},"linux\u002Famd64,linux\u002Farm64\n",[261,436,438,441,443],{"class":263,"line":437},18,[261,439,440],{"class":271},"          push",[261,442,275],{"class":267},[261,444,445],{"class":422},"true\n",[261,447,449,452,454],{"class":263,"line":448},19,[261,450,451],{"class":271},"          tags",[261,453,275],{"class":267},[261,455,457],{"class":456},"snl16","|\n",[261,459,461],{"class":263,"line":460},20,[261,462,463],{"class":278},"            ${{ github.repository_owner }}\u002F\u003Cproject_name>:latest\n",[237,465,467],{"id":466},"updates-to-move-to-ghcr","Updates to move to ghcr",[211,469,470],{},"The changes required to move it to ghcr were minimal - since ghcr is already well integrated with github actions.",[211,472,473],{},"First - add permissions so that github can write packages:",[251,475,477],{"className":253,"code":476,"language":255,"meta":256,"style":256},"permissions:\n  contents: read\n  packages: write\n",[258,478,479,486,496],{"__ignoreMap":256},[261,480,481,484],{"class":263,"line":264},[261,482,483],{"class":271},"permissions",[261,485,355],{"class":267},[261,487,488,491,493],{"class":263,"line":282},[261,489,490],{"class":271},"  contents",[261,492,275],{"class":267},[261,494,495],{"class":278},"read\n",[261,497,498,501,503],{"class":263,"line":293},[261,499,500],{"class":271},"  packages",[261,502,275],{"class":267},[261,504,505],{"class":278},"write\n",[211,507,508],{},"Then update the login and build steps:",[251,510,512],{"className":253,"code":511,"language":255,"meta":256,"style":256},"      - name: Login to GHCR\n        uses: docker\u002Flogin-action@v3\n        with:\n          registry: ghcr.io\n          username: ${{ github.actor }}\n          password: ${{ github.token }}\n\n      - name: Build and push\n        uses: docker\u002Fbuild-push-action@v6\n        with:\n          context: .\n          platforms: linux\u002Famd64,linux\u002Farm64\n          push: true\n          tags: |\n            ghcr.io\u002F${{ github.repository_owner }}\u002F\u003Cproject_name>:latest\n          labels: |\n            org.opencontainers.image.source=https:\u002F\u002Fgithub.com\u002F${{ github.repository }}\n",[258,513,514,525,533,539,549,558,567,571,581,589,595,603,611,619,627,632,641],{"__ignoreMap":256},[261,515,516,518,520,522],{"class":263,"line":264},[261,517,268],{"class":267},[261,519,272],{"class":271},[261,521,275],{"class":267},[261,523,524],{"class":278},"Login to GHCR\n",[261,526,527,529,531],{"class":263,"line":282},[261,528,285],{"class":271},[261,530,275],{"class":267},[261,532,346],{"class":278},[261,534,535,537],{"class":263,"line":293},[261,536,352],{"class":271},[261,538,355],{"class":267},[261,540,541,544,546],{"class":263,"line":300},[261,542,543],{"class":271},"          registry",[261,545,275],{"class":267},[261,547,548],{"class":278},"ghcr.io\n",[261,550,551,553,555],{"class":263,"line":312},[261,552,361],{"class":271},[261,554,275],{"class":267},[261,556,557],{"class":278},"${{ github.actor }}\n",[261,559,560,562,564],{"class":263,"line":322},[261,561,372],{"class":271},[261,563,275],{"class":267},[261,565,566],{"class":278},"${{ github.token }}\n",[261,568,569],{"class":263,"line":327},[261,570,297],{"emptyLinePlaceholder":296},[261,572,573,575,577,579],{"class":263,"line":339},[261,574,268],{"class":267},[261,576,272],{"class":271},[261,578,275],{"class":267},[261,580,394],{"class":278},[261,582,583,585,587],{"class":263,"line":349},[261,584,285],{"class":271},[261,586,275],{"class":267},[261,588,404],{"class":278},[261,590,591,593],{"class":263,"line":358},[261,592,352],{"class":271},[261,594,355],{"class":267},[261,596,597,599,601],{"class":263,"line":369},[261,598,417],{"class":271},[261,600,275],{"class":267},[261,602,423],{"class":422},[261,604,605,607,609],{"class":263,"line":380},[261,606,429],{"class":271},[261,608,275],{"class":267},[261,610,434],{"class":278},[261,612,613,615,617],{"class":263,"line":385},[261,614,440],{"class":271},[261,616,275],{"class":267},[261,618,445],{"class":422},[261,620,621,623,625],{"class":263,"line":397},[261,622,451],{"class":271},[261,624,275],{"class":267},[261,626,457],{"class":456},[261,628,629],{"class":263,"line":407},[261,630,631],{"class":278},"            ghcr.io\u002F${{ github.repository_owner }}\u002F\u003Cproject_name>:latest\n",[261,633,634,637,639],{"class":263,"line":414},[261,635,636],{"class":271},"          labels",[261,638,275],{"class":267},[261,640,457],{"class":456},[261,642,643],{"class":263,"line":426},[261,644,645],{"class":278},"            org.opencontainers.image.source=https:\u002F\u002Fgithub.com\u002F${{ github.repository }}\n",[237,647,649],{"id":648},"other-changes","Other changes",[211,651,652],{},"I did make one other improvement - when tagging a built image with a new tag - I used to do a docker pull, docker tag, docker push.",[211,654,655],{},"Now - it's using docker image tools - for example:",[251,657,661],{"className":658,"code":659,"language":660,"meta":256,"style":256},"language-shell shiki shiki-themes github-dark","docker buildx imagetools create \\\n  --tag ghcr.io\u002F${{ github.repository_owner }}\u002F\u003Cproject_name>:staging \\\n  ghcr.io\u002F${{ github.repository_owner }}\u002F\u003Cproject_name>:latest\n","shell",[258,662,663,681,712],{"__ignoreMap":256},[261,664,665,669,672,675,678],{"class":263,"line":264},[261,666,668],{"class":667},"svObZ","docker",[261,670,671],{"class":278}," buildx",[261,673,674],{"class":278}," imagetools",[261,676,677],{"class":278}," create",[261,679,680],{"class":422}," \\\n",[261,682,683,686,689,692,695,698,701,704,707,710],{"class":263,"line":282},[261,684,685],{"class":422},"  --tag",[261,687,688],{"class":278}," ghcr.io\u002F",[261,690,691],{"class":267},"${{ github.repository_owner }",[261,693,694],{"class":278},"}\u002F",[261,696,697],{"class":456},"\u003C",[261,699,700],{"class":278},"project_nam",[261,702,703],{"class":267},"e",[261,705,706],{"class":456},">",[261,708,709],{"class":278},":staging",[261,711,680],{"class":422},[261,713,714,717,719,721,723,725,727,729],{"class":263,"line":293},[261,715,716],{"class":278},"  ghcr.io\u002F",[261,718,691],{"class":267},[261,720,694],{"class":278},[261,722,697],{"class":456},[261,724,700],{"class":278},[261,726,703],{"class":267},[261,728,706],{"class":456},[261,730,731],{"class":278},":latest\n",[237,733,735],{"id":734},"tidy-up","Tidy up",[211,737,738],{},"Finally - I just had to remove the old dockerhub secrets from the repository.",[232,740,742],{"id":741},"pulling-images","Pulling images",[211,744,745,746,749],{},"To pull private images from ghcr.io - you need to create a PAT token with the ",[258,747,748],{},"read:packages"," scope.",[237,751,753],{"id":752},"testing-locally","Testing locally",[251,755,757],{"className":658,"code":756,"language":660,"meta":256,"style":256},"echo $GHCR_PAT | docker login ghcr.io -u \u003Cgithub-username> --password-stdin\ndocker pull ghcr.io\u002F\u003Cgithub-username>\u002F\u003Cproject_name>:latest\n",[258,758,759,795],{"__ignoreMap":256},[261,760,761,764,767,770,773,776,779,782,785,788,790,792],{"class":263,"line":264},[261,762,763],{"class":422},"echo",[261,765,766],{"class":267}," $GHCR_PAT ",[261,768,769],{"class":456},"|",[261,771,772],{"class":667}," docker",[261,774,775],{"class":278}," login",[261,777,778],{"class":278}," ghcr.io",[261,780,781],{"class":422}," -u",[261,783,784],{"class":456}," \u003C",[261,786,787],{"class":278},"github-usernam",[261,789,703],{"class":267},[261,791,706],{"class":456},[261,793,794],{"class":422}," --password-stdin\n",[261,796,797,799,802,804,806,808,810,812,815,817,819,821,823],{"class":263,"line":282},[261,798,668],{"class":667},[261,800,801],{"class":278}," pull",[261,803,688],{"class":278},[261,805,697],{"class":456},[261,807,787],{"class":278},[261,809,703],{"class":267},[261,811,706],{"class":456},[261,813,814],{"class":278},"\u002F",[261,816,697],{"class":456},[261,818,700],{"class":278},[261,820,703],{"class":267},[261,822,706],{"class":456},[261,824,731],{"class":278},[237,826,828],{"id":827},"updating-ansible","Updating ansible",[211,830,831],{},"I deploy simple docker images using ansible to some servers.",[833,834,836],"h4",{"id":835},"login","Login",[211,838,839,840,843,844,847],{},"Replace the ",[258,841,842],{},"dockerhub_password"," secret with a ",[258,845,846],{},"ghcr_pat"," secret in the ansible vault.",[211,849,850],{},"Then - update the login task:",[211,852,853],{},"Old:",[251,855,857],{"className":253,"code":856,"language":255,"meta":256,"style":256},"- name: Login to dockerhub\n  community.docker.docker_login:\n    username: \"{{ dockerhub_username }}\"\n    password: \"{{ dockerhub_password }}\"\n",[258,858,859,870,877,887],{"__ignoreMap":256},[261,860,861,864,866,868],{"class":263,"line":264},[261,862,863],{"class":267},"- ",[261,865,272],{"class":271},[261,867,275],{"class":267},[261,869,336],{"class":278},[261,871,872,875],{"class":263,"line":282},[261,873,874],{"class":271},"  community.docker.docker_login",[261,876,355],{"class":267},[261,878,879,882,884],{"class":263,"line":293},[261,880,881],{"class":271},"    username",[261,883,275],{"class":267},[261,885,886],{"class":278},"\"{{ dockerhub_username }}\"\n",[261,888,889,892,894],{"class":263,"line":300},[261,890,891],{"class":271},"    password",[261,893,275],{"class":267},[261,895,896],{"class":278},"\"{{ dockerhub_password }}\"\n",[211,898,899],{},"New:",[251,901,903],{"className":253,"code":902,"language":255,"meta":256,"style":256},"- name: Login to GHCR\n  community.docker.docker_login:\n    registry_url: ghcr.io\n    username: \"{{ github_username }}\"\n    password: \"{{ ghcr_pat }}\"\n",[258,904,905,915,921,930,939],{"__ignoreMap":256},[261,906,907,909,911,913],{"class":263,"line":264},[261,908,863],{"class":267},[261,910,272],{"class":271},[261,912,275],{"class":267},[261,914,524],{"class":278},[261,916,917,919],{"class":263,"line":282},[261,918,874],{"class":271},[261,920,355],{"class":267},[261,922,923,926,928],{"class":263,"line":293},[261,924,925],{"class":271},"    registry_url",[261,927,275],{"class":267},[261,929,548],{"class":278},[261,931,932,934,936],{"class":263,"line":300},[261,933,881],{"class":271},[261,935,275],{"class":267},[261,937,938],{"class":278},"\"{{ github_username }}\"\n",[261,940,941,943,945],{"class":263,"line":312},[261,942,891],{"class":271},[261,944,275],{"class":267},[261,946,947],{"class":278},"\"{{ ghcr_pat }}\"\n",[833,949,951],{"id":950},"deployment","Deployment",[211,953,954,955,958,959],{},"Simply change the image from ",[258,956,957],{},"\u003Cdockerhub_username>\u002F\u003Cproject_name>:latest"," to ",[258,960,961],{},"ghcr.io\u002F\u003Cgithub_username>\u002F\u003Cproject_name>:latest",[237,963,965],{"id":964},"updating-flux","Updating flux",[211,967,968],{},"In flux - I have secrets for registry credentials. These are deployed using sealed secrets.",[211,970,971],{},"Simple update - first - generate a new version of the secret:",[251,973,975],{"className":658,"code":974,"language":660,"meta":256,"style":256},"kubectl create secret docker-registry regcred \\\n  --namespace \u003Cnamespace> \\\n  --docker-server=ghcr.io \\\n  --docker-username=\u003Cgithub_username> \\\n  --docker-password='\u003CPAT token with package:read>' \\\n  --dry-run=client -o yaml > regcred.yaml\n",[258,976,977,995,1011,1018,1032,1042],{"__ignoreMap":256},[261,978,979,982,984,987,990,993],{"class":263,"line":264},[261,980,981],{"class":667},"kubectl",[261,983,677],{"class":278},[261,985,986],{"class":278}," secret",[261,988,989],{"class":278}," docker-registry",[261,991,992],{"class":278}," regcred",[261,994,680],{"class":422},[261,996,997,1000,1002,1005,1007,1009],{"class":263,"line":282},[261,998,999],{"class":422},"  --namespace",[261,1001,784],{"class":456},[261,1003,1004],{"class":278},"namespac",[261,1006,703],{"class":267},[261,1008,706],{"class":456},[261,1010,680],{"class":422},[261,1012,1013,1016],{"class":263,"line":293},[261,1014,1015],{"class":422},"  --docker-server=ghcr.io",[261,1017,680],{"class":422},[261,1019,1020,1023,1025,1028,1030],{"class":263,"line":300},[261,1021,1022],{"class":422},"  --docker-username=",[261,1024,697],{"class":456},[261,1026,1027],{"class":422},"github_username",[261,1029,706],{"class":456},[261,1031,680],{"class":422},[261,1033,1034,1037,1040],{"class":263,"line":312},[261,1035,1036],{"class":422},"  --docker-password=",[261,1038,1039],{"class":278},"'\u003CPAT token with package:read>'",[261,1041,680],{"class":422},[261,1043,1044,1047,1050,1053,1056],{"class":263,"line":322},[261,1045,1046],{"class":422},"  --dry-run=client",[261,1048,1049],{"class":422}," -o",[261,1051,1052],{"class":278}," yaml",[261,1054,1055],{"class":456}," >",[261,1057,1058],{"class":278}," regcred.yaml\n",[211,1060,1061],{},"Then seal it:",[251,1063,1065],{"className":658,"code":1064,"language":660,"meta":256,"style":256},"kubeseal --format=yaml -cert=path\u002Fto\u002Fpub-sealed-secrets.pem  \u003C regcred.yaml > regcred-sealed.yaml\n",[258,1066,1067],{"__ignoreMap":256},[261,1068,1069,1072,1075,1078,1081,1084,1086],{"class":263,"line":264},[261,1070,1071],{"class":667},"kubeseal",[261,1073,1074],{"class":422}," --format=yaml",[261,1076,1077],{"class":422}," -cert=path\u002Fto\u002Fpub-sealed-secrets.pem",[261,1079,1080],{"class":456},"  \u003C",[261,1082,1083],{"class":278}," regcred.yaml",[261,1085,1055],{"class":456},[261,1087,1088],{"class":278}," regcred-sealed.yaml\n",[211,1090,1091,1092,1096],{},"Remember ",[1093,1094,1095],"em",{},"NOT"," to commit the unsealed version.",[211,1098,1099,1100],{},"Then - update the image in the deployment to use ",[258,1101,961],{},[1103,1104,1105],"style",{},"html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .s4JwU, html code.shiki .s4JwU{--shiki-default:#85E89D}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}",{"title":256,"searchDepth":282,"depth":282,"links":1107},[1108,1114],{"id":234,"depth":282,"text":235,"children":1109},[1110,1111,1112,1113],{"id":239,"depth":293,"text":240},{"id":466,"depth":293,"text":467},{"id":648,"depth":293,"text":649},{"id":734,"depth":293,"text":735},{"id":741,"depth":282,"text":742,"children":1115},[1116,1117,1118],{"id":752,"depth":293,"text":753},{"id":827,"depth":293,"text":828},{"id":964,"depth":293,"text":965},null,"2025-09-17 08:25 +0200","md","Dockerhub is making changes to their base level paid tier which would more than double my monthly cost - and I don't want or use the extra stuff they are adding - so - testing out moving to github's container repository on ghcr.io",{},"\u002F2025\u002F09\u002F17\u002Fmoving-from-dockerhub-to-github-container-repository",{"title":206,"description":213},{"loc":1124},"2025\u002F09\u002F17\u002Fmoving-from-dockerhub-to-github-container-repository",[1129,668,1130,1131,1132],"github","dockerhub","container","ghcr","mHiPIl-PZr6pdKqbSxMNveTkvmQldE4iNFqWusb1W4s",1775293006374]