diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000000..a87b82dc8c --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,30 @@ +# Dockerfile for the InvenTree devcontainer + +# In contrast with the "production" image (which is based on an Alpine image) +# we use a Debian-based image for the devcontainer + +FROM mcr.microsoft.com/devcontainers/python:3.11-bookworm + +# InvenTree paths +ENV INVENTREE_HOME="/home/inventree" +ENV INVENTREE_DATA_DIR="${INVENTREE_HOME}/dev" +ENV INVENTREE_STATIC_ROOT="${INVENTREE_DATA_DIR}/static" +ENV INVENTREE_MEDIA_ROOT="${INVENTREE_DATA_DIR}/media" +ENV INVENTREE_BACKUP_DIR="${INVENTREE_DATA_DIR}/backup" +ENV INVENTREE_PLUGIN_DIR="${INVENTREE_DATA_DIR}/plugins" + +ENV INVENTREE_DOCKER="true" + +COPY contrib/container/init.sh ./ +RUN chmod +x init.sh + +# Install required base packages +RUN apt update && apt install -y \ + python3.11-dev python3.11-venv \ + libldap2-dev libsasl2-dev \ + libpango1.0-0 libcairo2 \ + weasyprint + +# Install python database connectors + +ENTRYPOINT ["/bin/bash", "./init.sh"] diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index 49d5201eec..51c4b1e7b9 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -20,11 +20,7 @@ services: inventree: build: context: .. - dockerfile: ../InvenTree/contrib/container/Dockerfile - target: dev - args: - base_image: "mcr.microsoft.com/vscode/devcontainers/base:alpine-3.18" - data_dir: "dev" + dockerfile: .devcontainer/Dockerfile volumes: - ../:/home/inventree:z diff --git a/.devcontainer/postCreateCommand.sh b/.devcontainer/postCreateCommand.sh index 3da203dddf..54d0e30005 100755 --- a/.devcontainer/postCreateCommand.sh +++ b/.devcontainer/postCreateCommand.sh @@ -8,7 +8,10 @@ python3 -m venv /home/inventree/dev/venv --system-site-packages --upgrade-deps . /home/inventree/dev/venv/bin/activate # Ensure the correct invoke is available -pip3 install invoke --ignore-installed -U +pip3 install --ignore-installed --upgrade invoke Pillow + +# install base level packages +pip3 install -Ur contrib/container/requirements.txt # Run initial InvenTree server setup invoke update -s @@ -23,3 +26,8 @@ invoke int.frontend-install # so that it gets copied from host to the container to have your global # git config in container rm -f /home/vscode/.gitconfig + +# Fix issue related to CFFI version mismatch +pip uninstall cffi -y +sudo apt remove --purge python3-cffi +pip install --no-cache-dir --force-reinstall --ignore-installed cffi diff --git a/contrib/container/Dockerfile b/contrib/container/Dockerfile index ff8d4b3229..1cf4f3fe9b 100644 --- a/contrib/container/Dockerfile +++ b/contrib/container/Dockerfile @@ -9,8 +9,7 @@ # - Runs InvenTree web server under django development server # - Monitors source files for any changes, and live-reloads server -ARG base_image=python:3.11-alpine3.21 -FROM ${base_image} AS inventree_base +FROM python:3.11-alpine3.21 AS inventree_base ARG base_image # Build arguments for this image diff --git a/contrib/container/docker-compose.yml b/contrib/container/docker-compose.yml index ffe8daa739..e8b07cff35 100644 --- a/contrib/container/docker-compose.yml +++ b/contrib/container/docker-compose.yml @@ -36,7 +36,7 @@ services: # Database service # Use PostgreSQL as the database backend inventree-db: - image: postgres:16 + image: postgres:17 container_name: inventree-db expose: - ${INVENTREE_DB_PORT:-5432}/tcp diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 4957d45436..6f97a54a10 100644 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -285,7 +285,7 @@ extra: min_python_version: 3.9 min_invoke_version: 2.0.0 django_version: 4.2 - docker_postgres_version: 16 + docker_postgres_version: 17 version: default: stable