Merge pull request #13 from nikdoof/main
Add Dockerfile and container build workflow
This commit is contained in:
commit
27415bdff6
4 changed files with 71 additions and 0 deletions
31
.github/workflows/build-container.yaml
vendored
Normal file
31
.github/workflows/build-container.yaml
vendored
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
name: Build Container
|
||||||
|
|
||||||
|
"on":
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
tags:
|
||||||
|
- "v[0-9]+.[0-9]+.[0-9]+"
|
||||||
|
jobs:
|
||||||
|
docker:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v2
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
- name: Login to GHCR
|
||||||
|
uses: docker/login-action@v2
|
||||||
|
if: github.event_name != 'pull_request'
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Build and push
|
||||||
|
id: docker_build
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
ghcr.io/${{ github.repository_owner }}/mastodon_get_replies:${{ github.ref_name }}
|
||||||
|
ghcr.io/${{ github.repository_owner }}/mastodon_get_replies:latest
|
6
Dockerfile
Normal file
6
Dockerfile
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
FROM python:3.11-alpine
|
||||||
|
WORKDIR /app
|
||||||
|
COPY ./requirements.txt /app/requirements.txt
|
||||||
|
RUN pip install --no-cache-dir --upgrade -r /app/requirements.txt
|
||||||
|
COPY ./find_posts.py /app/
|
||||||
|
ENTRYPOINT ["python", "find_posts.py"]
|
11
README.md
11
README.md
|
@ -63,6 +63,17 @@ When setting up your cronjob, do make sure you are setting the interval long eno
|
||||||
|
|
||||||
If you are running this script locally, my recommendation is to run it manually once, before turning on the cron job: The first run will be significantly slower than subsequent runs, and that will help you prevent overlapping during that first run.
|
If you are running this script locally, my recommendation is to run it manually once, before turning on the cron job: The first run will be significantly slower than subsequent runs, and that will help you prevent overlapping during that first run.
|
||||||
|
|
||||||
|
### 4) Run this script from a container
|
||||||
|
|
||||||
|
This script is also available in a pre-packaged container, [mastodon_get_replies](https://github.com/nanos/mastodon_get_replies/pkgs/container/mastodon_get_replies).
|
||||||
|
|
||||||
|
1. Pull the container from `ghcr.io`, using Docker or your container tool of choice: `docker pull ghcr.io/nanos/mastodon_get_replies:latest`
|
||||||
|
2. Run the container, passing the command line arguments like running the script directly: `docker run -it ghcr.io/nanos/mastodon_get_replies:latest --access-token=<TOKEN> --server=<SERVER>`
|
||||||
|
|
||||||
|
The same rules for running this as a cron job apply to running the container, don't overlap any executions.
|
||||||
|
|
||||||
|
An example Kubernetes CronJob for running the container is included in the [`examples`](https://github.com/nanos/mastodon_get_replies/tree/main/examples) folder.
|
||||||
|
|
||||||
## Acknowledgments
|
## Acknowledgments
|
||||||
|
|
||||||
This script is mostly taken from [Abhinav Sarkar](https://notes.abhinavsarkar.net/2023/mastodon-context), with just some additions and alterations. Thank you Abhinav!
|
This script is mostly taken from [Abhinav Sarkar](https://notes.abhinavsarkar.net/2023/mastodon-context), with just some additions and alterations. Thank you Abhinav!
|
||||||
|
|
23
examples/k8s-cronjob.yaml
Normal file
23
examples/k8s-cronjob.yaml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
---
|
||||||
|
apiVersion: batch/v1
|
||||||
|
kind: CronJob
|
||||||
|
metadata:
|
||||||
|
name: mastodon-get-replies
|
||||||
|
spec:
|
||||||
|
# Run every 2 hours
|
||||||
|
schedule: "0 */2 * * *"
|
||||||
|
successfulJobsHistoryLimit: 1
|
||||||
|
failedJobsHistoryLimit: 1
|
||||||
|
concurrencyPolicy: Forbid
|
||||||
|
jobTemplate:
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: mastodon-get-replies
|
||||||
|
image: ghcr.io/nanos/mastodon_get_replies:latest
|
||||||
|
args:
|
||||||
|
- --server=your.server.social
|
||||||
|
- --access-token=TOKEN
|
||||||
|
restartPolicy: Never
|
||||||
|
|
Loading…
Reference in a new issue