From 1ed8838270297206c7ac81f07424aec8bd8db80a Mon Sep 17 00:00:00 2001 From: Charles N Wyble Date: Mon, 14 Mar 2022 13:33:59 -0500 Subject: [PATCH] automation here we come... --- Apps/inventree/inventree-docker-compose.yml | 119 ++++++++++++++++++ .../docker-compose.postgres-tika.yml | 90 +++++++++++++ Overhead/PullContainers.sh | 35 ++++++ 3 files changed, 244 insertions(+) create mode 100644 Apps/inventree/inventree-docker-compose.yml create mode 100644 Apps/paperless-ng/docker-compose.postgres-tika.yml create mode 100644 Overhead/PullContainers.sh diff --git a/Apps/inventree/inventree-docker-compose.yml b/Apps/inventree/inventree-docker-compose.yml new file mode 100644 index 0000000..cef136b --- /dev/null +++ b/Apps/inventree/inventree-docker-compose.yml @@ -0,0 +1,119 @@ +version: "3.8" + +# Docker compose recipe for InvenTree +# - Runs PostgreSQL as the database backend +# - Runs Gunicorn as the InvenTree web server +# - Runs the InvenTree background worker process +# - Runs nginx as a reverse proxy + +# --------------------------------- +# IMPORTANT - READ BEFORE STARTING! +# --------------------------------- +# Before running, ensure that you change the "/path/to/data" directory, +# specified in the "volumes" section at the end of this file. +# This path determines where the InvenTree data will be stored! +# +# +# InvenTree Image Versions +# ------------------------ +# By default, this docker-compose script targets the STABLE version of InvenTree, +# image: inventree/inventree:stable +# +# To run the LATEST (development) version of InvenTree, change the target image to: +# image: inventree/inventree:latest +# +# Alternatively, you could target a specific tagged release version with (for example): +# image: inventree/inventree:0.5.3 +# +# NOTE: If you change the target image, ensure it is the same for the following containers: +# - inventree-server +# - inventree-worker + +services: + # Database service + # Use PostgreSQL as the database backend + # Note: this can be changed to a different backend, + # just make sure that you change the INVENTREE_DB_xxx vars below + inventree-db: + container_name: inventree-db + image: postgres:13 + ports: + - 5432/tcp + environment: + - PGDATA=/var/lib/postgresql/data/pgdb + # The pguser and pgpassword values must be the same in the other containers + # Ensure that these are correctly configured in your prod-config.env file + - POSTGRES_USER=pguser + - POSTGRES_PASSWORD=pgpassword + volumes: + # Map 'data' volume such that postgres database is stored externally + - data:/var/lib/postgresql/data/ + restart: unless-stopped + + # InvenTree web server services + # Uses gunicorn as the web server + inventree-server: + container_name: inventree-server + # If you wish to specify a particular InvenTree version, do so here + image: inventree/inventree:stable + expose: + - 8000 + depends_on: + - inventree-db + volumes: + # Data volume must map to /home/inventree/data + - data:/home/inventree/data + env_file: + # Environment variables required for the production server are configured in prod-config.env + - prod-config.env + restart: unless-stopped + + # Background worker process handles long-running or periodic tasks + inventree-worker: + container_name: inventree-worker + # If you wish to specify a particular InvenTree version, do so here + image: inventree/inventree:stable + command: invoke worker + depends_on: + - inventree-db + - inventree-server + volumes: + # Data volume must map to /home/inventree/data + - data:/home/inventree/data + env_file: + # Environment variables required for the production server are configured in prod-config.env + - prod-config.env + restart: unless-stopped + + # nginx acts as a reverse proxy + # static files are served directly by nginx + # media files are served by nginx, although authentication is redirected to inventree-server + # web requests are redirected to gunicorn + # NOTE: You will need to provide a working nginx.conf file! + inventree-proxy: + container_name: inventree-proxy + image: nginx:stable + depends_on: + - inventree-server + ports: + # Change "1337" to the port that you want InvenTree web server to be available on + - 1337:80 + volumes: + # Provide ./nginx.conf file to the container + # Refer to the provided example file as a starting point + - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro + # nginx proxy needs access to static and media files + - data:/var/www + restart: unless-stopped + +volumes: + # NOTE: Change /path/to/data to a directory on your local machine + # Persistent data, stored external to the container(s) + data: + driver: local + driver_opts: + type: none + o: bind + # This directory specified where InvenTree data are stored "outside" the docker containers + # Change this path to a local system path where you want InvenTree data stored + device: /path/to/data \ No newline at end of file diff --git a/Apps/paperless-ng/docker-compose.postgres-tika.yml b/Apps/paperless-ng/docker-compose.postgres-tika.yml new file mode 100644 index 0000000..93fff4a --- /dev/null +++ b/Apps/paperless-ng/docker-compose.postgres-tika.yml @@ -0,0 +1,90 @@ +# 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), PostgreSQL is used as the database server. +# - Apache Tika and Gotenberg servers are started with paperless and paperless +# is configured to use these services. These provide support for consuming +# Office documents (Word, Excel, Power Point and their LibreOffice counter- +# parts. +# +# 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 run --rm webserver createsuperuser' to create a user. +# - Run 'docker-compose up -d'. +# +# For more extensive installation and update instructions, refer to the +# documentation. + +version: "3.4" +services: + broker: + image: redis:6.0 + restart: unless-stopped + + db: + image: postgres:13 + restart: unless-stopped + volumes: + - pgdata:/var/lib/postgresql/data + environment: + POSTGRES_DB: paperless + POSTGRES_USER: paperless + POSTGRES_PASSWORD: paperless + + webserver: + image: jonaswinkler/paperless-ng:latest + restart: unless-stopped + depends_on: + - db + - broker + - gotenberg + - tika + ports: + - 8000:8000 + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8000"] + interval: 30s + timeout: 10s + retries: 5 + 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_DBHOST: db + PAPERLESS_TIKA_ENABLED: 1 + PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://gotenberg:3000 + PAPERLESS_TIKA_ENDPOINT: http://tika:9998 + + gotenberg: + image: thecodingmachine/gotenberg + restart: unless-stopped + environment: + DISABLE_GOOGLE_CHROME: 1 + + tika: + image: apache/tika + restart: unless-stopped + +volumes: + data: + media: + pgdata: diff --git a/Overhead/PullContainers.sh b/Overhead/PullContainers.sh new file mode 100644 index 0000000..9008be4 --- /dev/null +++ b/Overhead/PullContainers.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +export container_list=" + jenkins/jenkins \ + elabftw/elabimg \ + huginn/huginn \ + phpipam/phpipam-www \ + photoprism/photoprism \ + deamos/openstreamingplatform \ + securecompliance/gvm:debian-master-data-full \ + securecompliance/gvm:debian-master-data \ + securecompliance/gvm:debian-master-full \ + securecompliance/gvm:debian-master \ + killbill/killbill \ + killbill/kaui \ + drone/drone \ + archivebox/archivebox \ + apache/tika \ + thecodingmachine/gotenberg \ + inventree/inventree \ + jonaswinkler/paperless-ng \ + seknox/guacd \ + seknox/trasa \ + bunkerity/bunkerized-nginx \ + linuxserver/swag \ + authelia/authelia \ + beanbag/reviewboard:latest \ + containrrr/watchtower:latest \ + xetusoss/archiva + " + +for container in $container_list; +do + docker pull $container +done