Docker Image for linux/arm/v7 (raspberry pi 4)

Hi,

Disclaimer: I do this to advertise to new owners of a Raspberry Pi 4 who struggled to make TTRSS work. Since fox doesn’t provide an image for Raspberry Pi 4, I made one for myself and thought to share. :slight_smile:

I have spent some time time trying to make TTRSS work on my Raspberry Pi 4 (armv7), and I learned about a wonderful feature of GitHub: GitHub Actions.

Basically, they automate actions. I have set one up to build TTRSS for Raspberry Pi 4 and push the image to DockerHub.
I can’t promise that it won’t break, especially if there are changes in the docker compose repository, but it’s an easy way to rely on an image already built, and anyone can copy what I did to have their own image themselves.

More specifically, I sync the docker compose repo to my repo’s TTRSS-docker branch (have to create it before running this Action), then build it, and push it to DockerHub (have to create the repo before). I do this for the app (schklom/ttrss-app) and web-nginx (schklom/ttrss-web-nginx) containers.

My repo is private, but I share the code below.

You can use

    image: schklom/ttrss-app

instead of

    build: 
      context:
        ./app

for the app, backups, and updater containers.
AFAIK, the updater updates every day, so I update my image every day as well.

For info, here is the action defined in my private repo (myrepo/.github/workflows/TTRSS.yml).
I have set up repository secrets obviously.

name: Sync+build+push TTRSS

on:
  schedule:
    # * is a special character in YAML so you have to quote this string
    - cron:  '0 0 * * *'
  workflow_dispatch:

jobs:
  repo-sync:
    runs-on: ubuntu-latest
    steps:
      - name: repo-sync
        uses: wei/git-sync@v2
        with:
          source_repo: "https://git.tt-rss.org/fox/ttrss-docker-compose.git"
          source_branch: "master"
          destination_repo: "[email protected]:schklom/Mirror-workflows.git"
          destination_branch: "TTRSS-docker"
          ssh_private_key: ${{ secrets.GITSYNCACTION }}
  buildandpush:
    needs: [repo-sync]
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          ref: 'TTRSS-docker' # branch
      # https://github.com/docker/setup-qemu-action#usage
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      # https://github.com/marketplace/actions/docker-setup-buildx
      - name: Set up Docker Buildx
        id: buildx
        uses: docker/setup-buildx-action@v1
      #- name: Available platforms
      #  run: echo ${{ steps.buildx.outputs.platforms }}
      # https://github.com/docker/login-action#docker-hub
      - name: Login to Docker Hub
        uses: docker/login-action@v1
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      # https://github.com/docker/build-push-action#multi-platform-image
      - name: Build and push TTRSS app
        uses: docker/build-push-action@v2
        with:
          context: ./app
          file: ./app/Dockerfile
          #platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
          platforms: linux/arm/v7
          pull: true
          push: true
          tags: |
            schklom/ttrss-app:latest
      - name: Build and push TTRSS web-nginx
        uses: docker/build-push-action@v2
        with:
          context: ./web-nginx
          file: ./web-nginx/Dockerfile
          #platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
          platforms: linux/arm/v7
          pull: true
          push: true
          tags: |
            schklom/ttrss-web-nginx:latest

EDIT: main repo is no longer private, and available here

interesting.

/20charCHARchar

interesting

Good point. I made it private because I had some personal info as comments in the Action files from when I was learning how it works. I removed the private stuff, and made the repo public.
It’s here