mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-30 20:55:42 +00:00 
			
		
		
		
	[WIP] docker / Caddy (#6551)
* remove docker-sqlite file - Do not want to encourage use of sqlite * Add Caddyfile * Add default site URL to .env - Matches Caddyfile * Cleanup / simplify .env file * Remove dev nginx conf file * Further cleanup of .env file * Update docker-compose.yml - Use caddy image instead of nginx as proxy * Set max body size * gunicorn: enable external logging * Update file structure * Cleanup docker-compose file * Update docker/docker-compose.yml Co-authored-by: Matthias Mair <code@mjmair.com> * Update docker/Caddyfile Co-authored-by: Matthias Mair <code@mjmair.com> * Fix for postgresql packages - Need postgresql13-client to be installed, it contains pg_dump - Without this, backup / restore *does not work* * Create static_i18n dir if it does not exist * Reduce output from collectstatic * Revert gunicorn logging - Want to see the logs in docker * Fix trailing slash Ref: https://github.com/inventree/InvenTree/pull/6551#issuecomment-1962423765 * tasks.py - pass 'nouv' option through * Update package requirements: - Allow installation of rapidfuzz without building * Install uv as part of docker image * Add environment variable to control downstream URL * Do not use uv package manager by default - Currently does not work "correctly" - ignores installed packages - Requires further work to run reliably * Fix docker-compose file - Do not build locally * Cleanup gunicorn file - Remove unused lien * Cleanup docker-compose.yml - Simpler volume management * Update Caddyfile Add newline * Update requirements.txt Add newline * Update tasks.py Add missing blank line * Simplify Caddyfile * Adds option for customizing web port * cleanup docker-compose.yml - Better mapping of caddy data - Cleaner volume setup * Add django version template - Ensure all docs links point to the current django version we are using * docs: cleanup intro.md * Cleanup serving_files.md * Cleanup config.md * docker install docs updates * Enable code block copying * Fix include file * Fix link * Update docker install docs * Update docker.md * Add info about demo dataset * Tweak heading * Update docs link checks * Fix workflow * Another fix * More ignore pattearns --------- Co-authored-by: Matthias Mair <code@mjmair.com>
This commit is contained in:
		
							
								
								
									
										122
									
								
								docker/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										122
									
								
								docker/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,122 @@ | ||||
| version: "3.8" | ||||
|  | ||||
| # Docker compose recipe for a production-ready InvenTree setup, with the following containers: | ||||
| # - PostgreSQL as the database backend | ||||
| # - gunicorn as the InvenTree web server | ||||
| # - django-q as the InvenTree background worker process | ||||
| # - nginx as a reverse proxy | ||||
| # - redis as the cache manager (optional, disabled by default) | ||||
|  | ||||
| # --------------------- | ||||
| # READ BEFORE STARTING! | ||||
| # --------------------- | ||||
|  | ||||
| # ----------------------------- | ||||
| # Setting environment variables | ||||
| # ----------------------------- | ||||
| # Shared environment variables should be stored in the .env file | ||||
| # Changes made to this file are reflected across all containers! | ||||
| # | ||||
| # IMPORTANT NOTE: | ||||
| # You should not have to change *anything* within this docker-compose.yml file! | ||||
| # Instead, make any changes in the .env file! | ||||
|  | ||||
| # ------------------------ | ||||
| # 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 INVENTREE_TAG variable (in the .env file) to "latest" | ||||
| # | ||||
| # Alternatively, you could target a specific tagged release version with (for example): | ||||
| # INVENTREE_TAG=0.7.5 | ||||
| # | ||||
|  | ||||
| services: | ||||
|     # Database service | ||||
|     # Use PostgreSQL as the database backend | ||||
|     inventree-db: | ||||
|         image: postgres:13 | ||||
|         container_name: inventree-db | ||||
|         expose: | ||||
|             - ${INVENTREE_DB_PORT:-5432}/tcp | ||||
|         environment: | ||||
|             - PGDATA=/var/lib/postgresql/data/pgdb | ||||
|             - POSTGRES_USER=${INVENTREE_DB_USER:?You must provide the 'INVENTREE_DB_USER' variable in the .env file} | ||||
|             - POSTGRES_PASSWORD=${INVENTREE_DB_PASSWORD:?You must provide the 'INVENTREE_DB_PASSWORD' variable in the .env file} | ||||
|             - POSTGRES_DB=${INVENTREE_DB_NAME:?You must provide the 'INVENTREE_DB_NAME' variable in the .env file} | ||||
|         volumes: | ||||
|             # Map 'data' volume such that postgres database is stored externally | ||||
|             - ${INVENTREE_EXT_VOLUME:?You must specify the 'INVENTREE_EXT_VOLUME' variable in the .env file!}:/var/lib/postgresql/data/:z | ||||
|         restart: unless-stopped | ||||
|  | ||||
|     # redis acts as database cache manager | ||||
|     # only runs under the "redis" profile : https://docs.docker.com/compose/profiles/ | ||||
|     inventree-cache: | ||||
|         image: redis:7.0 | ||||
|         container_name: inventree-cache | ||||
|         depends_on: | ||||
|             - inventree-db | ||||
|         profiles: | ||||
|             - redis | ||||
|         env_file: | ||||
|             - .env | ||||
|         expose: | ||||
|             - ${INVENTREE_CACHE_PORT:-6379} | ||||
|         restart: always | ||||
|  | ||||
|     # InvenTree web server service | ||||
|     # Uses gunicorn as the web server | ||||
|     inventree-server: | ||||
|         # If you wish to specify a particular InvenTree version, do so here | ||||
|         image: inventree/inventree:${INVENTREE_TAG:-stable} | ||||
|         container_name: inventree-server | ||||
|         # Only change this port if you understand the stack. | ||||
|         expose: | ||||
|             - 8000 | ||||
|         depends_on: | ||||
|             - inventree-db | ||||
|         env_file: | ||||
|             - .env | ||||
|         volumes: | ||||
|             # Data volume must map to /home/inventree/data | ||||
|             - ${INVENTREE_EXT_VOLUME}:/home/inventree/data:z | ||||
|         restart: unless-stopped | ||||
|  | ||||
|     # Background worker process handles long-running or periodic tasks | ||||
|     inventree-worker: | ||||
|         # If you wish to specify a particular InvenTree version, do so here | ||||
|         image: inventree/inventree:${INVENTREE_TAG:-stable} | ||||
|         container_name: inventree-worker | ||||
|         command: invoke worker | ||||
|         depends_on: | ||||
|             - inventree-server | ||||
|         env_file: | ||||
|             - .env | ||||
|         volumes: | ||||
|             # Data volume must map to /home/inventree/data | ||||
|             - ${INVENTREE_EXT_VOLUME}:/home/inventree/data:z | ||||
|         restart: unless-stopped | ||||
|  | ||||
|     # caddy acts as reverse proxy and static file server | ||||
|     # https://hub.docker.com/_/caddy | ||||
|     inventree-proxy: | ||||
|         container_name: inventree-proxy | ||||
|         image: caddy:alpine | ||||
|         restart: always | ||||
|         depends_on: | ||||
|             - inventree-server | ||||
|         ports: | ||||
|             - ${INVENTREE_WEB_PORT:-80}:80 | ||||
|             - 443:443 | ||||
|         env_file: | ||||
|             - .env | ||||
|         volumes: | ||||
|             - ./Caddyfile:/etc/caddy/Caddyfile:ro | ||||
|             - ${INVENTREE_EXT_VOLUME}/static:/var/www/static:z | ||||
|             - ${INVENTREE_EXT_VOLUME}/media:/var/www/media:z | ||||
|             - ${INVENTREE_EXT_VOLUME}:/var/log:z | ||||
|             - ${INVENTREE_EXT_VOLUME}:/data:z | ||||
|             - ${INVENTREE_EXT_VOLUME}:/config:z | ||||
		Reference in New Issue
	
	Block a user