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:-../}