diff --git a/environments/infra/Jenkinsfile b/environments/infra/Jenkinsfile new file mode 100644 index 0000000..e69de29 diff --git a/environments/infra/restart.sh b/environments/infra/restart.sh new file mode 100644 index 0000000..92353a9 --- /dev/null +++ b/environments/infra/restart.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +PROJECT_ROOT=$(dirname "$(dirname "$(realpath "$0")")") + +# Restart all projects except 'traefik' +for dir in $(find "$PROJECT_ROOT" -type d -path "*/docker-compose/*" | grep -v "/traefik/docker-compose/traefik"); do + echo "Processing directory: $dir" + cd "$dir" || { echo "Failed to enter directory: $dir"; continue; } + + # Execute docker compose commands + if [ -f "docker-compose.yml" ] || [ -f "docker-compose.yaml" ]; then + echo "Running docker compose down && docker compose up -d in $dir" + docker compose down && docker compose up -d + else + echo "No docker-compose file found in $dir, skipping..." + fi + + # Return to the project root + cd "$PROJECT_ROOT" || exit +done + +# Restart 'traefik' project last +TRAEFIK_DIR=$(find "$PROJECT_ROOT" -type d -path "*/traefik/docker-compose/traefik") +if [ -n "$TRAEFIK_DIR" ]; then + echo "Processing traefik directory: $TRAEFIK_DIR" + cd "$TRAEFIK_DIR" || { echo "Failed to enter traefik directory: $TRAEFIK_DIR"; exit 1; } + + # Execute docker compose commands + if [ -f "docker-compose.yml" ] || [ -f "docker-compose.yaml" ]; then + echo "Running docker compose down && docker compose up -d in $TRAEFIK_DIR" + docker compose down && docker compose up -d + else + echo "No docker-compose file found in $TRAEFIK_DIR, skipping..." + fi +fi diff --git a/paperless/docker-compose/paperless/.env b/paperless/docker-compose/paperless/.env new file mode 100644 index 0000000..0bd5be6 --- /dev/null +++ b/paperless/docker-compose/paperless/.env @@ -0,0 +1 @@ +COMPOSE_PROJECT_NAME=paperless diff --git a/paperless/docker-compose/paperless/docker-compose.yaml b/paperless/docker-compose/paperless/docker-compose.yaml new file mode 100644 index 0000000..fa13650 --- /dev/null +++ b/paperless/docker-compose/paperless/docker-compose.yaml @@ -0,0 +1,89 @@ +# Docker Compose file for running paperless from the Docker Hub. +# This file contains everything paperless needs to run. +# Paperless supports amd64, arm and arm64 hardware. +# +# All compose files of paperless configure paperless in the following way: +# +# - Paperless is (re)started on system boot, if it was running before shutdown. +# - Docker volumes for storing data are managed by Docker. +# - Folders for importing and exporting files are created in the same directory +# as this file and mounted to the correct folders inside the container. +# - Paperless listens on port 8000. +# +# In addition to that, this Docker Compose file adds the following optional +# configurations: +# +# - Instead of SQLite (default), MariaDB is used as the database server. +# +# To install and update paperless with this file, do the following: +# +# - Copy this file as 'docker-compose.yml' and the files 'docker-compose.env' +# and '.env' into a folder. +# - Run 'docker compose pull'. +# - Run 'docker compose up -d'. +# +# For more extensive installation and update instructions, refer to the +# documentation. + +services: + broker: + image: docker.io/library/redis:8 + restart: unless-stopped + volumes: + - redisdata:/data + networks: + paperless: + + db: + image: docker.io/library/mariadb:11 + restart: unless-stopped + volumes: + - dbdata:/var/lib/mysql + environment: + MARIADB_HOST: paperless + MARIADB_DATABASE: paperless + MARIADB_USER: paperless + MARIADB_PASSWORD: paperless + MARIADB_ROOT_PASSWORD: paperless + networks: + paperless: + + + webserver: + image: ghcr.io/paperless-ngx/paperless-ngx:latest + restart: unless-stopped + depends_on: + - db + - broker + ports: + - "8000:8000" + volumes: + - data:/usr/src/paperless/data + - media:/usr/src/paperless/media + - ./export:/usr/src/paperless/export + - ./consume:/usr/src/paperless/consume + env_file: docker-compose.env + environment: + PAPERLESS_REDIS: redis://broker:6379 + PAPERLESS_DBENGINE: mariadb + PAPERLESS_DBHOST: db + PAPERLESS_DBUSER: paperless # only needed if non-default username + PAPERLESS_DBPASS: paperless # only needed if non-default password + PAPERLESS_DBPORT: 3306 + + networks: + traefik_traefik: + paperless: + + +volumes: + data: + media: + dbdata: + redisdata: + + +networks: + traefik_traefik: + external: true + paperless: {}