mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-30 20:55:42 +00:00 
			
		
		
		
	Docker improvements (#3042)
* Simplified dockerfile - Changed from alpine to python:slim - Removed some database libs (because we *connect* to a db, not host it) * - Add gettext as required package - Only create inventree user as part of production build (leave admin access for dev build) * Tweaks for tasks.py * Fix user permissions (drop to inventree user) * Drop to the 'inventree' user level as part of init.sh - As we have mounted volumes at 'run time' we need to ensure that the inventree user has correct permissions! - Ref: https://stackoverflow.com/questions/39397548/how-to-give-non-root-user-in-docker-container-access-to-a-volume-mounted-on-the * Adjust user setup - Only drop to non-root user as part of "production" build - Mounted external volumes make it tricky when in the dev build - Might want to revisit this later on * More dockerfile changes - reduce required system packages - * Add new docker github workflow * Print some more debug * GITHUB_BASE_REF * Add gnupg to base requirements * Improve debug output during testing * Refactoring updates for label printing API - Update weasyprint version to 55.0 - Generate labels as pdf files - Provide filename to label printing plugin - Additional unit testing - Improve extraction of some hidden debug data during TESTING - Fix a spelling mistake (notifaction -> notification) * Working on github action * More testing * Add requirement for pdf2image * Fix label printing plugin and update unit testing * Add required packages for CI * Move docker files to the top level directory - This allows us to build the production image directly from soure - Don't need to re-download the source code from github - Note: The docker install guide will need to be updated! * Fix for docker ci file * Print GIT SHA * Bake git information into the production image * Add some exta docstrings to dockerfile * Simplify version check script * Extract git commit info * Extract docker tag from check_version.py * Newline * More work on the docker workflow * Dockerfile fixes - Directory / path issues * Dockerfile fixes - Directory / path issues * Ignore certain steps on a pull request * Add poppler-utils to CI * Consolidate version check into existing CI file * Don't run docker workflow on pull request * Pass docker image tag through to the build Also check .j2k files * Add supervisord.conf example file back in * Remove --no-cache-dir option from pip install
This commit is contained in:
		| @@ -1,104 +0,0 @@ | ||||
| version: "3.8" | ||||
|  | ||||
| # Docker compose recipe for InvenTree development server | ||||
| # - Runs PostgreSQL as the database backend | ||||
| # - Uses built-in django webserver | ||||
| # - Runs the InvenTree background worker process | ||||
| # - Serves media and static content directly from Django webserver | ||||
|  | ||||
| # IMPORANT NOTE: | ||||
| # The InvenTree development image does not clone source code from git. | ||||
| # Instead, it runs from source code on your local machine. | ||||
| # The django server will auto-detect any code changes and reload the server. | ||||
|  | ||||
| # If you have cloned the InvenTree git repo, and not made any changes to this file, | ||||
| # then the default setup in this file should work straight out of the box, without modification | ||||
|  | ||||
| services: | ||||
|  | ||||
|     # Database service | ||||
|     # Use PostgreSQL as the database backend | ||||
|     # Note: This can be changed to a different backend if required | ||||
|     inventree-dev-db: | ||||
|         container_name: inventree-dev-db | ||||
|         image: postgres:13 | ||||
|         ports: | ||||
|             - ${INVENTREE_DB_PORT:-5432}/tcp | ||||
|         environment: | ||||
|             - PGDATA=/var/lib/postgresql/data/dev/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_src:/var/lib/postgresql/data | ||||
|         restart: unless-stopped | ||||
|  | ||||
|     # InvenTree web server services | ||||
|     # Uses gunicorn as the web server | ||||
|     inventree-dev-server: | ||||
|         container_name: inventree-dev-server | ||||
|         depends_on: | ||||
|           - inventree-dev-db | ||||
|         build: | ||||
|             context: . | ||||
|             target: dev | ||||
|         # Cache the built image to be used by the inventree-dev-worker process | ||||
|         image: inventree-dev-image | ||||
|         ports: | ||||
|             # Expose web server on port 8000 | ||||
|             - 8000:8000 | ||||
|         # Note: If using the inventree-dev-proxy container (see below), | ||||
|         # comment out the "ports" directive (above) and uncomment the "expose" directive | ||||
|         #expose: | ||||
|         #    - 8000 | ||||
|         volumes: | ||||
|             # Ensure you specify the location of the 'src' directory at the end of this file | ||||
|             - inventree_src:/home/inventree | ||||
|         env_file: | ||||
|             - .env | ||||
|         restart: unless-stopped | ||||
|  | ||||
|     # Background worker process handles long-running or periodic tasks | ||||
|     inventree-dev-worker: | ||||
|         container_name: inventree-dev-worker | ||||
|         image: inventree-dev-image | ||||
|         command: invoke worker | ||||
|         depends_on: | ||||
|             - inventree-dev-server | ||||
|         volumes: | ||||
|             # Ensure you specify the location of the 'src' directory at the end of this file | ||||
|             - inventree_src:/home/inventree | ||||
|         env_file: | ||||
|             - .env | ||||
|         restart: unless-stopped | ||||
|  | ||||
|     ### Optional: Serve static and media files using nginx | ||||
|     ### Uncomment the following lines to enable nginx proxy for testing | ||||
|     ### Note: If enabling the proxy, change "ports" to "expose" for the inventree-dev-server container (above) | ||||
|     #inventree-dev-proxy: | ||||
|     #    container_name: inventree-dev-proxy | ||||
|     #    image: nginx:stable | ||||
|     #    depends_on: | ||||
|     #        - inventree-dev-server | ||||
|     #    ports: | ||||
|     #        # Change "8000" to the port that you want InvenTree web server to be available on | ||||
|     #        - 8000:80 | ||||
|     #    volumes: | ||||
|     #        # Provide ./nginx.dev.conf file to the container | ||||
|     #        # Refer to the provided example file as a starting point | ||||
|     #        - ./nginx.dev.conf:/etc/nginx/conf.d/default.conf:ro | ||||
|     #        # nginx proxy needs access to static and media files | ||||
|     #        - inventree_src:/var/www | ||||
|     #    restart: unless-stopped | ||||
|  | ||||
| volumes: | ||||
|     # Persistent data, stored external to the container(s) | ||||
|     inventree_src: | ||||
|         driver: local | ||||
|         driver_opts: | ||||
|             type: none | ||||
|             o: bind | ||||
|             # This directory specified where InvenTree source code is stored "outside" the docker containers | ||||
|             # By default, this directory is one level above the "docker" directory | ||||
|             device: ${INVENTREE_EXT_VOLUME:-../} | ||||
		Reference in New Issue
	
	Block a user