From 31be2a71174f75c65347059422db7cf75d9efdb0 Mon Sep 17 00:00:00 2001 From: Glenn 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 "$@" + +