From c9f277d043972bd2d31288a4ca7f4e88aaa06479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?BENEDEK=20L=C3=A1szl=C3=B3?= Date: Sat, 18 Jan 2025 15:26:26 +0100 Subject: [PATCH] Basic Docker image --- docker/Dockerfile.release | 36 ++++++++++++++++++++++++++++++++++++ docker/docker-compose.yml | 14 ++++++++++++++ docker/start.sh | 26 ++++++++++++++++++++++++++ docker/template.env | 3 +++ 4 files changed, 79 insertions(+) create mode 100644 docker/Dockerfile.release create mode 100644 docker/docker-compose.yml create mode 100644 docker/start.sh create mode 100644 docker/template.env diff --git a/docker/Dockerfile.release b/docker/Dockerfile.release new file mode 100644 index 00000000000..bd8621f1ffb --- /dev/null +++ b/docker/Dockerfile.release @@ -0,0 +1,36 @@ +FROM debian:bookworm-slim AS build + +RUN apt update && apt install -y --no-install-recommends \ + python3 python3-dev python3-venv build-essential ca-certificates + +RUN useradd -u 1000 -U -m red +USER red +WORKDIR /home/red + +RUN bash -c \ + 'python3 -m venv .redenv && \ + source .redenv/bin/activate && \ + pip install Red-DiscordBot && \ + rm -rf .cache && \ + redbot-setup \ + --no-prompt \ + --instance-name RedBot \ + --data-path /home/red/data \ + --overwrite-existing-instance \ + --backend json' + +FROM debian:bookworm-slim + +RUN apt update && apt install -y --no-install-recommends \ + python3 python3-venv openjdk-17-jre-headless ca-certificates + +RUN useradd -u 1000 -U -m red +USER red +WORKDIR /home/red + +COPY --chown=red:red --from=build /home/red /home/red + +COPY --chown=red:red start.sh /home/red/start.sh +RUN chmod +x /home/red/start.sh && mkdir /home/red/data + +ENTRYPOINT [ "/home/red/start.sh" ] \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 00000000000..1308f8dd0df --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,14 @@ +services: + red-bot: + image: red-bot + build: + context: . + dockerfile: Dockerfile.release + tags: + - red-bot + env_file: .env + volumes: + - data:/home/red/data + +volumes: + data: \ No newline at end of file diff --git a/docker/start.sh b/docker/start.sh new file mode 100644 index 00000000000..1c84bfd85e4 --- /dev/null +++ b/docker/start.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +set -e + +source .redenv/bin/activate + +PREFIX="${PREFIX:-!}" + +[ -z "$OWNER" ] && echo "Set the OWNER!" && exit 1 +[ -z "$TOKEN" ] && echo "Set the TOKEN!" && exit 1 + +if [ -z "$(ls -A data)" ]; then + redbot-setup \ + --no-prompt \ + --instance-name RedBot \ + --data-path /home/red/data \ + --overwrite-existing-instance \ + --backend json +fi + +redbot RedBot \ + --no-prompt \ + --token "${TOKEN}" \ + --owner "${OWNER}" \ + --prefix "${PREFIX}" \ + --mentionable \ No newline at end of file diff --git a/docker/template.env b/docker/template.env new file mode 100644 index 00000000000..8b4423fd811 --- /dev/null +++ b/docker/template.env @@ -0,0 +1,3 @@ +TOKEN= +OWNER= +PREFIX=! \ No newline at end of file