summaryrefslogtreecommitdiff
path: root/gemini.Dockerfile
diff options
context:
space:
mode:
Diffstat (limited to 'gemini.Dockerfile')
-rw-r--r--gemini.Dockerfile38
1 files changed, 38 insertions, 0 deletions
diff --git a/gemini.Dockerfile b/gemini.Dockerfile
new file mode 100644
index 0000000..7cd4cad
--- /dev/null
+++ b/gemini.Dockerfile
@@ -0,0 +1,38 @@
+FROM alpine:3.23 AS agate
+RUN apk --update --no-cache add rust cargo \
+ && wget -O - https://github.com/mbrubeck/agate/archive/refs/tags/v3.3.20.tar.gz | tar -xz \
+ && cargo install --path agate-3.3.20/ \
+ && apk del rust cargo \
+ && rm -rf agate-3.3.20 agate-target
+
+FROM alpine:3.23 AS comitium
+RUN apk --no-cache add make go scdoc
+RUN wget -O - https://git.sr.ht/~nytpu/comitium/archive/v1.8.2.tar.gz | tar -xz \
+ && make --directory=comitium-v1.8.2 \
+ && mv comitium-v1.8.2/build/comitium /usr/local/bin/comitium \
+ && apk del make go scdoc \
+ && rm -rf comitium-v1.8.2
+
+FROM alpine:3.23 AS final
+RUN mkdir -p /var/app/content
+WORKDIR /var/app
+COPY gemini/.certificates .certificates
+RUN crontab -l > crontab.tmp \
+ && echo "0 */6 * * * /usr/local/bin/comitium refresh --data /var/app/comitium-data" >> crontab.tmp \
+ && crontab crontab.tmp \
+ && rm crontab.tmp
+
+# bash is needed to run the build scripts
+# busybox-openrc provides rc-service, which runs crond
+# gcc is a dependency for agate
+# make is needed to run the Makefile
+RUN apk --no-cache add bash busybox-openrc gcc make
+RUN rc-update add crond
+COPY --from=agate /root/.cargo/bin/agate /usr/local/bin/agate
+COPY --from=comitium /usr/local/bin/comitium /usr/local/bin/comitium
+
+COPY gemini .
+COPY common /var/common
+RUN make
+
+CMD ./run.sh