From 2c57a59e15acb9af2c41f3342bcaa9de0930b24d Mon Sep 17 00:00:00 2001
From: anima
Date: Sun, 11 Jun 2023 10:15:24 +0200
Subject: [PATCH] inital setup
---
.drone.env.sample | 10 ++++++++
.env.sample | 1 +
.git.env.sample | 8 +++++++
.gitignore | 2 ++
README.md | 60 +++++++++++++++++++++++++++++++++++++++++++++-
docker-compose.yml | 53 ++++++++++++++++++++++++++++++++++++++++
6 files changed, 133 insertions(+), 1 deletion(-)
create mode 100644 .drone.env.sample
create mode 100644 .env.sample
create mode 100644 .git.env.sample
create mode 100644 .gitignore
create mode 100644 docker-compose.yml
diff --git a/.drone.env.sample b/.drone.env.sample
new file mode 100644
index 0000000..166f75d
--- /dev/null
+++ b/.drone.env.sample
@@ -0,0 +1,10 @@
+# Drone settings
+DRONETAG=
+
+## https://docs.drone.io/server/provider/gitea/
+DRONE_GITEA_SERVER=https://git.example.com
+DRONE_GITEA_CLIENT_ID=
+DRONE_GITEA_CLIENT_SECRET=
+DRONE_RPC_SECRET=
+DRONE_SERVER_HOST=ci.example.com
+DRONE_SERVER_PROTO=https
\ No newline at end of file
diff --git a/.env.sample b/.env.sample
new file mode 100644
index 0000000..f37c809
--- /dev/null
+++ b/.env.sample
@@ -0,0 +1 @@
+BASEDIR=
\ No newline at end of file
diff --git a/.git.env.sample b/.git.env.sample
new file mode 100644
index 0000000..06fc393
--- /dev/null
+++ b/.git.env.sample
@@ -0,0 +1,8 @@
+# gitea settings
+GITTAG=
+
+USER_UID=1000
+USER_GID=1000
+
+## preconfig for app.ini
+## https://github.com/go-gitea/gitea/tree/main/contrib/environment-to-ini
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4b366d4
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+files/
+*.env
\ No newline at end of file
diff --git a/README.md b/README.md
index 93f7493..68d0626 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,60 @@
-# compose-gitea
+# Basic git & drone docker-compose config
+* can be run on single node setup or in swarm
+## howto
+### single node
+#### start container
+```bash
+docker compose up -d
+```
+
+#### stop container (and remove)
+```bash
+docker compose down
+```
+
+#### view logs
+```bash
+docker compose logs -f
+```
+
+#### reload config
+```bash
+docker compose restart
+```
+
+### swarm
+#### start aka deploy
+hint: drone fails to start until git auth source is created and set in vars
+```bash
+docker stack deploy -c docker-compose.yml git
+```
+
+#### stop container aka service
+```bash
+docker service rm git_git
+docker service rm git_drone
+```
+
+#### view logs
+```bash
+docker service logs git_git -f
+docker service logs git_drone -f
+```
+
+#### reload config (no downtime if replica 2 or more)
+```bash
+docker service update git_git --force
+docker service update git_drone --force
+```
+
+## example caddy config
+```
+git.example.com {
+ reverse_proxy git:80
+}
+
+ci.example.com {
+ reverse_proxy drone:80
+}
+```
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..fe6ae1d
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,53 @@
+# https://docs.docker.com/compose/compose-file/compose-file-v3/
+---
+version: "3.9"
+services:
+ git:
+ image: gitea/gitea:${GITTAG:-latest}
+ container_name: git
+ env_file:
+ - .git.env
+ - .env
+ restart: unless-stopped
+ ports:
+ - 3000:3000
+ deploy:
+ replicas: 1
+ placement:
+ max_replicas_per_node: 1
+ update_config:
+ parallelism: 1
+ delay: 10s
+ volumes:
+ - ${BASEDIR:-.}/files/git/:/data/
+ - /etc/timezone:/etc/timezone:ro
+ - /etc/localtime:/etc/localtime:ro
+ networks:
+ - backend
+
+ drone:
+ image: drone/drone:${DRONETAG:-latest}
+ container_name: drone
+ env_file:
+ - .drone.env
+ - .env
+ restart: unless-stopped
+ ports:
+ - 8080:80
+ - 8443:443
+ deploy:
+ replicas: 1
+ placement:
+ max_replicas_per_node: 1
+ update_config:
+ parallelism: 1
+ delay: 10s
+ volumes:
+ - ${BASEDIR:-.}/files/drone/:/data/
+ networks:
+ - backend
+
+networks:
+ backend:
+ name: ${INTRANET:-backend}
+ external: true
\ No newline at end of file