mirror of
https://github.com/inventree/InvenTree.git
synced 2026-07-28 09:27:26 +00:00
* Fix Docker setup for local Windows deployment. Disable Redis disk persistence to avoid bind-mount permission errors that caused login 500s, and configure localhost as the default site URL. * Fix Redis write failures on Windows Docker bind mounts. Disable RDB persistence for the cache container so login and other cache writes do not fail when the Redis data volume cannot be written on Windows hosts. * Keep Redis volume mount while disabling disk persistence. Addresses review feedback on #12418: retain the external /data volume from #11100 but disable RDB/AOF writes so Windows bind mounts no longer trigger MISCONF errors.
131 lines
5.0 KiB
YAML
131 lines
5.0 KiB
YAML
# 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
|
|
# - Caddy as a reverse proxy
|
|
# - redis as the cache manager (optional, enabled 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
|
|
#
|
|
|
|
# ----------------------------
|
|
# Docker compose customization
|
|
# ----------------------------
|
|
# If you wish to customize the docker-compose script, you should only do so if you understand the stack!
|
|
# Do not expect support for customizations that are not part of the standard InvenTree setup!
|
|
|
|
services:
|
|
# Database service
|
|
# Use PostgreSQL as the database backend
|
|
inventree-db:
|
|
image: postgres:17
|
|
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
|
|
inventree-cache:
|
|
image: redis:7-alpine
|
|
container_name: inventree-cache
|
|
# Disable disk persistence to avoid permission errors on Windows bind mounts.
|
|
# The /data volume is retained for layout consistency (#11100); cache data is ephemeral.
|
|
command: redis-server --save "" --appendonly no
|
|
env_file:
|
|
- .env
|
|
expose:
|
|
- ${INVENTREE_CACHE_PORT:-6379}
|
|
volumes:
|
|
- ${INVENTREE_EXT_VOLUME}/redis:/data
|
|
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:
|
|
- ${INVENTREE_WEB_PORT:-8000}
|
|
depends_on:
|
|
- inventree-db
|
|
- inventree-cache
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
INVENTREE_SERVER: http://inventree-server:${INVENTREE_WEB_PORT}
|
|
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
|
|
# You can adjust the ports that the proxy listens on via the .env file
|
|
# https://hub.docker.com/_/caddy
|
|
inventree-proxy:
|
|
container_name: inventree-proxy
|
|
image: caddy:alpine
|
|
restart: always
|
|
depends_on:
|
|
- inventree-server
|
|
ports:
|
|
- ${INVENTREE_HTTP_PORT:-80}:80
|
|
- ${INVENTREE_HTTPS_PORT:-443}:443
|
|
env_file:
|
|
- .env
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile:ro,z
|
|
- ${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
|