From b8bf9de3ecc328f494cf660820a0ac2c62027948 Mon Sep 17 00:00:00 2001
From: Ada <ada@gnous.eu>
Date: Sat, 17 Feb 2024 22:02:11 +0100
Subject: [PATCH] Docker support & image
---
.woodpecker/build.yaml | 17 +++++++++++++++++
docker/Dockerfile | 21 +++++++++++++++++++++
docker/docker-compose.dev.yaml | 12 ++++++++++++
docker/docker-compose.yaml | 18 ++++++++++++++++++
docker/serve.go | 9 +++++++++
5 files changed, 77 insertions(+)
create mode 100644 .woodpecker/build.yaml
create mode 100644 docker/Dockerfile
create mode 100644 docker/docker-compose.dev.yaml
create mode 100644 docker/docker-compose.yaml
create mode 100644 docker/serve.go
diff --git a/.woodpecker/build.yaml b/.woodpecker/build.yaml
new file mode 100644
index 0000000..ed6024f
--- /dev/null
+++ b/.woodpecker/build.yaml
@@ -0,0 +1,17 @@
+steps:
+ - name: publish_image
+ image: woodpeckerci/plugin-docker-buildx
+ settings:
+ repo: git.gnous.eu/${CI_REPO_OWNER}/wiki
+ dockerfile: docker/Dockerfile
+ platforms: linux/amd64
+ registry: https://git.gnous.eu
+ tag: ${CI_COMMIT}
+ username:
+ from_secret: docker_username
+ password:
+ from_secret: docker_password
+ when:
+ branch: ${CI_REPO_DEFAULT_BRANCH}
+ event: push
+
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 0000000..e08047a
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,21 @@
+FROM golang:1.22 as build
+
+WORKDIR /build
+COPY . .
+
+RUN wget https://github.com/rust-lang/mdBook/releases/download/v0.4.37/mdbook-v0.4.37-x86_64-unknown-linux-gnu.tar.gz
+RUN tar xvf mdbook-v0.4.37-x86_64-unknown-linux-gnu.tar.gz
+RUN ./mdbook build
+
+RUN CGO_ENABLED=0 go build -ldflags "-w -s" docker/serve.go
+
+FROM gcr.io/distroless/static-debian12:nonroot
+
+WORKDIR /app
+
+COPY --from=build /build/serve .
+COPY --from=build /build/book/ static/
+
+EXPOSE 3000
+
+CMD ["/app/serve"]
\ No newline at end of file
diff --git a/docker/docker-compose.dev.yaml b/docker/docker-compose.dev.yaml
new file mode 100644
index 0000000..6ef0df0
--- /dev/null
+++ b/docker/docker-compose.dev.yaml
@@ -0,0 +1,12 @@
+version: "3"
+
+services:
+ www:
+ build:
+ context: ../
+ dockerfile: docker/Dockerfile
+ restart: always
+ container_name: www
+ ports:
+ - "3000:3000"
+
diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml
new file mode 100644
index 0000000..bd17832
--- /dev/null
+++ b/docker/docker-compose.yaml
@@ -0,0 +1,18 @@
+version: "3"
+
+networks:
+ plakken:
+ external: false
+
+volumes:
+ redis:
+ driver: local
+
+services:
+ server:
+ image: git.gnous.eu/gnouseu/wiki:latest
+ restart: always
+ container_name: plakken
+ read_only: true
+ ports:
+ - "3000:3000"
diff --git a/docker/serve.go b/docker/serve.go
new file mode 100644
index 0000000..37c15c9
--- /dev/null
+++ b/docker/serve.go
@@ -0,0 +1,9 @@
+package main
+
+import "net/http"
+
+func main() {
+ fs := http.FileServer(http.Dir("./static"))
+ http.Handle("GET /", fs)
+ http.ListenAndServe(":3000", nil)
+}