From 31be2a71174f75c65347059422db7cf75d9efdb0 Mon Sep 17 00:00:00 2001
From: Glenn <glenux@glenux.net>
Date: Sat, 6 Jul 2024 18:26:48 +0200
Subject: [PATCH] feat: implement base features

---
 .dockerignore         |   2 +
 .drone.yml            | 111 ++++++++++++++++++++++++++++++++++++++++++
 Dockerfile            |   8 +++
 README.md             |  26 ++++++++++
 docker-compose.yml    |  45 +++++++++++++++++
 entrypoint-wrapper.sh |  16 ++++++
 6 files changed, 208 insertions(+)
 create mode 100644 entrypoint-wrapper.sh

diff --git a/.dockerignore b/.dockerignore
index e69de29..76ab1a8 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -0,0 +1,2 @@
+.drone.yml
+.git
diff --git a/.drone.yml b/.drone.yml
index e69de29..011a8ab 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -0,0 +1,111 @@
+---
+kind: pipeline
+type: docker
+name: default
+
+steps:
+  - name: debug
+    image: alpine
+    environment:
+
+    commands:
+      - 'echo "Repository: glenux/service-wallabag"'
+      - 'echo "Git commit: ${DRONE_COMMIT_SHA:0:8}"'
+
+  - name: publish:commit_sha
+    image: plugins/docker
+    # pull: never
+    # volumes:
+    #   - name: cache
+    #     path: /stupid
+    environment:
+      DOCKER_REPO: glenux/service-wallabag
+    settings:
+      username:
+        from_secret: DOCKERHUB_USERNAME
+      password:
+        from_secret: DOCKERHUB_PASSWORD
+      cache_from: "glenux/service-wallabag:latest_${DRONE_BRANCH/\\//-}"
+      repo: glenux/service-wallabag
+      tags: "${DRONE_COMMIT_SHA:0:8}"
+      purge: false
+
+  - name: publish:commit_branch
+    image: plugins/docker
+    # volumes:
+    #   - name: cache
+    #     path: /stupid
+    settings:
+      username:
+        from_secret: DOCKERHUB_USERNAME
+      password:
+        from_secret: DOCKERHUB_PASSWORD
+      cache_from: "glenux/service-wallabag:latest_${DRONE_BRANCH/\\//-}"
+      repo: glenux/service-wallabag
+      tags: "latest_${DRONE_BRANCH/\\//-}"
+      purge: false
+    when:
+      branch:
+        - "master"
+        - "develop"
+        - "feature/*"
+
+  - name: publish:latest
+    image: plugins/docker
+    settings:
+      username:
+        from_secret: DOCKERHUB_USERNAME
+      password:
+        from_secret: DOCKERHUB_PASSWORD
+      cache_from: "glenux/service-wallabag:latest_${DRONE_BRANCH/\\//-}"
+      repo: glenux/service-wallabag
+      tags: latest
+      purge: false
+    when:
+      branch:
+        - master
+
+  - name: deploy:dokku
+    image: alpine
+    when:
+      branch:
+        - master
+    environment:
+      SSH_USER:
+        from_secret: SSH_USER
+      SSH_HOST:
+        from_secret: SSH_HOST
+      SSH_PRIVATE_KEY:
+        from_secret: SSH_PRIVATE_KEY
+    commands:
+      - echo $SSH_USER
+      - echo $SSH_HOST
+      - echo $SSH_PRIVATE_KEY
+      - apk update && apk add openssh-client
+      - mkdir -p ~/.ssh && chmod 700 ~/.ssh
+      - echo "$SSH_PRIVATE_KEY" | base64 -d > ~/.ssh/deploy_key
+      - chmod 600 ~/.ssh/deploy_key
+      - ssh -o StrictHostKeyChecking=no
+            -i ~/.ssh/deploy_key
+            "$SSH_USER@$SSH_HOST"
+            git:from-image automation
+            "glenux/service-wallabag:${DRONE_COMMIT_SHA:0:8}"
+            #
+
+# volumes:
+#   - name: cache
+#     temp: {}
+#
+# ---
+# kind: pipeline
+# type: docker
+# name: sheduled
+# 
+# steps:
+#   - name: check:update
+#     image: alpine
+#     environment:
+# 
+#     commands:
+#       - 'echo "Repository: glenux/service-wallabag"'
+#       - 'echo "Git commit: ${DRONE_COMMIT_SHA:0:8}"'
diff --git a/Dockerfile b/Dockerfile
index e69de29..abe93c6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -0,0 +1,8 @@
+FROM wallabag/wallabag:2.6.9
+
+# Copy custom entrypoint script
+COPY --chown=wallabag:wallabag --chmod=755 entrypoint-wrapper.sh /entrypoint-wrapper.sh
+
+# Set the custom entrypoint
+ENTRYPOINT ["/entrypoint-wrapper.sh"]
+
diff --git a/README.md b/README.md
index e69de29..3bd1029 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,26 @@
+
+
+dokku apps:create wallabag
+
+
+dokku mariadb:create wallabag_db
+dokku mariadb:link wallabag_db wallabag
+dokku redis:create wallabag_redis
+dokku redis:link wallabag_redis wallabag
+dokku config:set wallabag MYSQL_ROOT_PASSWORD=wallaroot
+dokku config:set wallabag SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
+dokku config:set wallabag SYMFONY__ENV__DATABASE_HOST=$(dokku mariadb:info wallabag_db --dsn | grep '^Host=' | cut -d= -f2)
+dokku config:set wallabag SYMFONY__ENV__DATABASE_PORT=3306
+dokku config:set wallabag SYMFONY__ENV__DATABASE_NAME=wallabag
+dokku config:set wallabag SYMFONY__ENV__DATABASE_USER=wallabag
+dokku config:set wallabag SYMFONY__ENV__DATABASE_PASSWORD=wallapass
+dokku config:set wallabag SYMFONY__ENV__DATABASE_CHARSET=utf8mb4
+dokku config:set wallabag SYMFONY__ENV__DATABASE_TABLE_PREFIX="wallabag_"
+dokku config:set wallabag SYMFONY__ENV__MAILER_DSN=smtp://127.0.0.1
+dokku config:set wallabag SYMFONY__ENV__FROM_EMAIL=wallabag@example.com
+dokku config:set wallabag SYMFONY__ENV__DOMAIN_NAME=https://your-wallabag-instance.wallabag.org
+dokku config:set wallabag SYMFONY__ENV__SERVER_NAME="Your wallabag instance"
+mkdir -p /opt/wallabag/images
+dokku storage:mount wallabag /opt/wallabag/images:/var/www/wallabag/web/assets/images
+FROM wallabag/wallabag
+
diff --git a/docker-compose.yml b/docker-compose.yml
index e69de29..e3741b4 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -0,0 +1,45 @@
+version: '3'
+services:
+  wallabag:
+    image: wallabag/wallabag
+    environment:
+      - MYSQL_ROOT_PASSWORD=wallaroot
+      - SYMFONY__ENV__DATABASE_DRIVER=pdo_mysql
+      - SYMFONY__ENV__DATABASE_HOST=db
+      - SYMFONY__ENV__DATABASE_PORT=3306
+      - SYMFONY__ENV__DATABASE_NAME=wallabag
+      - SYMFONY__ENV__DATABASE_USER=wallabag
+      - SYMFONY__ENV__DATABASE_PASSWORD=wallapass
+      - SYMFONY__ENV__DATABASE_CHARSET=utf8mb4
+      - SYMFONY__ENV__DATABASE_TABLE_PREFIX="wallabag_"
+      - SYMFONY__ENV__MAILER_DSN=smtp://127.0.0.1
+      - SYMFONY__ENV__FROM_EMAIL=wallabag@example.com
+      - SYMFONY__ENV__DOMAIN_NAME=https://your-wallabag-instance.wallabag.org
+      - SYMFONY__ENV__SERVER_NAME="Your wallabag instance"
+    ports:
+      - "80"
+    volumes:
+      - /opt/wallabag/images:/var/www/wallabag/web/assets/images
+    healthcheck:
+      test: ["CMD", "wget" ,"--no-verbose", "--tries=1", "--spider", "http://localhost"]
+      interval: 1m
+      timeout: 3s
+    depends_on:
+      - db
+      - redis
+  db:
+    image: mariadb
+    environment:
+      - MYSQL_ROOT_PASSWORD=wallaroot
+    volumes:
+      - /opt/wallabag/data:/var/lib/mysql
+    healthcheck:
+      test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
+      interval: 20s
+      timeout: 3s
+  redis:
+    image: redis:alpine
+    healthcheck:
+      test: ["CMD", "redis-cli", "ping"]
+      interval: 20s
+      timeout: 3s
diff --git a/entrypoint-wrapper.sh b/entrypoint-wrapper.sh
new file mode 100644
index 0000000..0dfa0b7
--- /dev/null
+++ b/entrypoint-wrapper.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+# Parse DATABASE_URL
+if [ -n "$DATABASE_URL" ]; then
+  export SYMFONY__ENV__DATABASE_DRIVER=$(echo $DATABASE_URL | sed -e 's,^\(.*\)://.*,\\1,g')
+  export SYMFONY__ENV__DATABASE_USER=$(echo $DATABASE_URL | sed -e 's,.*://\([^:]*\):.*,\1,g')
+  export SYMFONY__ENV__DATABASE_PASSWORD=$(echo $DATABASE_URL | sed -e 's,.*:.\([^@]*\)@.*,\\1,g')
+  export SYMFONY__ENV__DATABASE_HOST=$(echo $DATABASE_URL | sed -e 's,.*@\([^:]*\):.*,\\1,g')
+  export SYMFONY__ENV__DATABASE_PORT=$(echo $DATABASE_URL | sed -e 's,.*:\([^/]*\)/.*,\\1,g')
+  export SYMFONY__ENV__DATABASE_NAME=$(echo $DATABASE_URL | sed -e 's,.*\/\([^?]*\).*,\\1,g')
+fi
+
+# Call the original entrypoint
+exec docker-php-entrypoint "$@"
+
+