From 85c276bcf5370f09f143750d40ed33bbd0fc6f07 Mon Sep 17 00:00:00 2001 From: 3252a8 <3252a8@proton.me> Date: Fri, 3 Apr 2026 20:36:34 +0300 Subject: [PATCH] Setup ghcr --- .github/workflows/dev-docker-build.yml | 21 ++++++------------- .github/workflows/docker-publish.yml | 28 +++++++++++++------------- README.md | 13 ++++++++---- docker-compose-remote-server.yml | 2 +- docker-compose.yml | 4 ++-- 5 files changed, 32 insertions(+), 36 deletions(-) diff --git a/.github/workflows/dev-docker-build.yml b/.github/workflows/dev-docker-build.yml index 36cb4c0..479ac78 100644 --- a/.github/workflows/dev-docker-build.yml +++ b/.github/workflows/dev-docker-build.yml @@ -1,4 +1,4 @@ -name: Build and Push Dev Docker Image +name: Build and Push Dev GHCR Image on: push: @@ -9,9 +9,7 @@ on: - dev env: - GHCR_REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} - DOCKERHUB_IMAGE: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} + GHCR_IMAGE: ghcr.io/3252a8/remnawave-tg-shop jobs: build: @@ -24,29 +22,22 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Log in to GitHub Container Registry uses: docker/login-action@v3 with: - registry: ${{ env.GHCR_REGISTRY }} + registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Log in to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@v5 with: images: | - ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }} - ${{ env.DOCKERHUB_IMAGE }} + ${{ env.GHCR_IMAGE }} tags: | type=ref,event=branch type=ref,event=pr diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index e1a8a28..447440b 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -1,4 +1,4 @@ -name: Build and Publish multi-arch Docker Image +name: Build and Publish GHCR Docker Image on: push: @@ -10,8 +10,7 @@ on: - 'README.md' env: - GHCR_IMAGE: ghcr.io/${{ github.repository }} - DOCKERHUB_IMAGE: docker.io/${{ secrets.DOCKERHUB_USERNAME }}/${{ github.event.repository.name }} + GHCR_IMAGE: ghcr.io/3252a8/remnawave-tg-shop jobs: build-and-push: @@ -31,26 +30,27 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Log in to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Set up QEMU (для эмуляции arm64 на x86) uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ env.GHCR_IMAGE }} + tags: | + type=raw,value=latest + type=semver,pattern={{version}} + - name: Build and push multi-arch Docker image uses: docker/build-push-action@v5 with: context: . platforms: linux/amd64,linux/arm64 push: true - tags: | - ${{ env.GHCR_IMAGE }}:latest - ${{ env.GHCR_IMAGE }}:${{ github.ref_name }} - ${{ env.DOCKERHUB_IMAGE }}:latest - ${{ env.DOCKERHUB_IMAGE }}:${{ github.ref_name }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/README.md b/README.md index 2368874..efd4ad4 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ 1. **Клонируйте репозиторий:** ```bash - git clone https://github.com/kavore/remnawave-tg-shop + git clone https://github.com/3252a8/remnawave-tg-shop cd remnawave-tg-shop ``` @@ -182,7 +182,7 @@ ### 1. Клонирование репозитория ```bash -git clone https://github.com/kavore/remnawave-tg-shop && cd remnawave-tg-shop +git clone https://github.com/3252a8/remnawave-tg-shop && cd remnawave-tg-shop ``` ### 2. Настройка переменных окружения @@ -325,9 +325,14 @@ cd /opt/remnawave/nginx && docker compose down && docker compose up -d && docker ## 🐳 Docker -Файлы `Dockerfile` и `docker-compose.yml` уже настроены для сборки и запуска проекта. `docker-compose.yml` использует готовый образ с GitHub Container Registry, но вы можете раскомментировать `build: .` для локальной сборки. +Файлы `Dockerfile` и `docker-compose.yml` уже настроены для локальной сборки и запуска проекта. Если нужен готовый образ из GHCR, используйте `docker-compose-remote-server.yml` или переключите `docker-compose.yml` на строку `image:` вместо `build: .`. -Для автоматической публикации образов настроены GitHub Actions (`.github/workflows`). По умолчанию образы пушатся в GitHub Container Registry и Docker Hub. Добавьте в Secrets репозитория значения `DOCKERHUB_USERNAME` и `DOCKERHUB_TOKEN` (персональный access token или пароль для Docker Hub), чтобы загрузка в Docker Hub работала корректно. +Образ публикуется в GitHub Container Registry по пути `ghcr.io/3252a8/remnawave-tg-shop`. GitHub Actions выкладывают теги `latest` и `0.1.0`: `latest` обновляется из `main`, а `0.1.0` появляется при сборке тега `v0.1.0`. + +Чтобы закрепить версию на сервере, можно запустить: +```bash +IMAGE_TAG=0.1.0 docker compose -f docker-compose-remote-server.yml up -d +``` ## 📁 Структура проекта diff --git a/docker-compose-remote-server.yml b/docker-compose-remote-server.yml index 439b8b3..d025c36 100644 --- a/docker-compose-remote-server.yml +++ b/docker-compose-remote-server.yml @@ -1,6 +1,6 @@ services: remnawave-tg-shop: - image: kavore/remnawave-tg-shop:latest + image: ghcr.io/3252a8/remnawave-tg-shop:${IMAGE_TAG:-latest} container_name: remnawave-tg-shop hostname: remnawave-tg-shop env_file: diff --git a/docker-compose.yml b/docker-compose.yml index 403a869..b5e151a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: remnawave-tg-shop: -# image: kavore/remnawave-tg-shop:latest +# image: ghcr.io/3252a8/remnawave-tg-shop:${IMAGE_TAG:-latest} build: . container_name: remnawave-tg-shop hostname: remnawave-tg-shop @@ -40,4 +40,4 @@ networks: volumes: remnawave-tg-shop-db-data: - name: remnawave-tg-shop-db-data \ No newline at end of file + name: remnawave-tg-shop-db-data