From b44d92cef3f8a41bfeb67e3d3a446f678afb6f6b Mon Sep 17 00:00:00 2001 From: vchikalkin Date: Fri, 15 Aug 2025 21:15:10 +0300 Subject: [PATCH] Update Docker images in docker-compose and GitHub Actions workflow to use dynamic tags - Changed Docker image references in docker-compose.yml to utilize environment variables for versioning. - Updated GitHub Actions workflow to generate and use dynamic image tags based on the commit SHA for both web and bot images. - Ensured that the .env file is populated with the new image tags during the deployment process. --- .github/workflows/deploy.yml | 20 ++++++++++++++++---- docker-compose.yml | 8 +++----- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 5336d11..22b8f61 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -9,6 +9,9 @@ jobs: build-and-push: name: Build and Push to Docker Hub runs-on: ubuntu-latest + outputs: + web_tag: ${{ steps.vars.outputs.web_tag }} + bot_tag: ${{ steps.vars.outputs.bot_tag }} steps: - name: Checkout code uses: actions/checkout@v3 @@ -23,24 +26,30 @@ jobs: echo "NEXTAUTH_SECRET=fakesecret" >> .env echo "BOT_URL=http://localhost:3000" >> .env + - name: Set image tags + id: vars + run: | + echo "web_tag=web-${GITHUB_SHA::7}" >> $GITHUB_OUTPUT + echo "bot_tag=bot-${GITHUB_SHA::7}" >> $GITHUB_OUTPUT + - name: Login to Docker Hub run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login -u "${{ secrets.DOCKERHUB_USERNAME }}" --password-stdin - name: Build web image run: | - docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/zapishis-web:latest -f ./apps/web/Dockerfile . + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/zapishis-web:${{ steps.vars.outputs.web_tag }} -f ./apps/web/Dockerfile . - name: Push web image to Docker Hub run: | - docker push ${{ secrets.DOCKERHUB_USERNAME }}/zapishis-web:latest + docker push ${{ secrets.DOCKERHUB_USERNAME }}/zapishis-web:${{ steps.vars.outputs.web_tag }} - name: Build bot image run: | - docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/zapishis-bot:latest -f ./apps/bot/Dockerfile . + docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/zapishis-bot:${{ steps.vars.outputs.bot_tag }} -f ./apps/bot/Dockerfile . - name: Push bot image to Docker Hub run: | - docker push ${{ secrets.DOCKERHUB_USERNAME }}/zapishis-bot:latest + docker push ${{ secrets.DOCKERHUB_USERNAME }}/zapishis-bot:${{ steps.vars.outputs.bot_tag }} deploy: name: Deploy to VPS @@ -71,6 +80,9 @@ jobs: echo "EMAIL_GRAPHQL=${{ secrets.EMAIL_GRAPHQL }}" >> .env echo "NEXTAUTH_SECRET=${{ secrets.NEXTAUTH_SECRET }}" >> .env echo "BOT_URL=${{ secrets.BOT_URL }}" >> .env + echo "WEB_IMAGE_TAG=${{ needs.build-and-push.outputs.web_tag }}" >> .env + echo "BOT_IMAGE_TAG=${{ needs.build-and-push.outputs.bot_tag }}" >> .env + echo "DOCKERHUB_USERNAME=${{ secrets.DOCKERHUB_USERNAME }}" >> .env - name: Copy .env to VPS via SCP uses: appleboy/scp-action@master diff --git a/docker-compose.yml b/docker-compose.yml index abb13ac..d46d2b7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: web: - image: vchikalkin/zapishis-web:latest + image: ${DOCKERHUB_USERNAME}/zapishis-web:${WEB_IMAGE_TAG} env_file: - .env restart: always @@ -9,13 +9,12 @@ services: interval: 10s timeout: 3s retries: 5 - # ports: - # - 3000:3000 networks: - app - web + bot: - image: vchikalkin/zapishis-bot:latest + image: ${DOCKERHUB_USERNAME}/zapishis-bot:${BOT_IMAGE_TAG} env_file: - .env restart: always @@ -27,4 +26,3 @@ networks: external: true web: external: true -