diff --git a/Makefile b/Makefile index c875af8..d17d8c6 100644 --- a/Makefile +++ b/Makefile @@ -105,8 +105,12 @@ run-docker-dev-server: ## Start docker containers with current dev source code rm -Rf deployment/dist/ cp -ruv dist deployment/ cd deployment && make down + cd deployment && ./compose.dev.sh build --pull cd deployment && ./compose.dev.sh up +shell_docker-dev-server: ## Go into bash shell in PyInventory dev container + cd deployment && ./compose.dev.sh exec inventory /bin/bash + ############################################################################## .PHONY: help install lint fix test publish \ No newline at end of file diff --git a/deployment/Dockerfile b/deployment/Dockerfile index 94cb9c0..050e48a 100644 --- a/deployment/Dockerfile +++ b/deployment/Dockerfile @@ -1,6 +1,9 @@ FROM python:3.9-slim-buster # https://hub.docker.com/_/python +ARG XDG_CACHE_HOME +ENV XDG_CACHE_HOME=${XDG_CACHE_HOME} + # Install deps RUN apt-get update \ && apt-mark auto $(apt-mark showinstall) \ @@ -11,7 +14,7 @@ RUN apt-get update \ && python3 -m pip install -U pip \ && pip install -U psycopg2-binary -WORKDIR /inventory +WORKDIR /django RUN pip install "pyinventory>=0.5.0" diff --git a/deployment/caddy/Caddyfile b/deployment/caddy/Caddyfile index 519fc3f..5335925 100644 --- a/deployment/caddy/Caddyfile +++ b/deployment/caddy/Caddyfile @@ -23,9 +23,6 @@ Disallow: /" file_server /static/* { root /srv/ } - file_server /media/* { - root /srv/ - } reverse_proxy inventory:8000 } } diff --git a/deployment/common.env b/deployment/common.env index 8e324cb..b2ba956 100644 --- a/deployment/common.env +++ b/deployment/common.env @@ -7,4 +7,4 @@ DB_PORT=5432 PYTHONUNBUFFERED=1 # e.g.: pip cache: -XDG_CACHE_HOME="/var/cache" +XDG_CACHE_HOME=/var/cache diff --git a/deployment/inventory/inventory_settings.py b/deployment/django/docker_settings.py similarity index 100% rename from deployment/inventory/inventory_settings.py rename to deployment/django/docker_settings.py diff --git a/deployment/inventory/entrypoint.sh b/deployment/django/entrypoint.sh similarity index 90% rename from deployment/inventory/entrypoint.sh rename to deployment/django/entrypoint.sh index 50904b0..5a4f60b 100755 --- a/deployment/inventory/entrypoint.sh +++ b/deployment/django/entrypoint.sh @@ -36,9 +36,8 @@ fi ./manage.py migrate uwsgi \ - --http inventory:8000 \ - --chdir /inventory/ \ - --wsgi-file /inventory/wsgi.py \ + --http "$(hostname):8000" \ + --wsgi-file /django/wsgi.py \ --master \ --processes 2 \ --threads 2 \ diff --git a/deployment/inventory/manage.py b/deployment/django/manage.py similarity index 100% rename from deployment/inventory/manage.py rename to deployment/django/manage.py diff --git a/deployment/inventory/wsgi.py b/deployment/django/wsgi.py similarity index 100% rename from deployment/inventory/wsgi.py rename to deployment/django/wsgi.py diff --git a/deployment/docker-compose.dev.yml b/deployment/docker-compose.dev.yml index 0f9b32f..29c70b3 100644 --- a/deployment/docker-compose.dev.yml +++ b/deployment/docker-compose.dev.yml @@ -8,7 +8,7 @@ services: inventory: environment: - - DJANGO_SETTINGS_MODULE=inventory_settings + - DJANGO_SETTINGS_MODULE=docker_settings - HOSTNAME=localhost links: - postgres:postgres diff --git a/deployment/docker-compose.yml b/deployment/docker-compose.yml index 30ff94b..ccf408a 100644 --- a/deployment/docker-compose.yml +++ b/deployment/docker-compose.yml @@ -11,8 +11,7 @@ services: - ./caddy/Caddyfile:/etc/caddy/Caddyfile:ro - ./volumes/caddy/data/:/data/:rw - ./volumes/caddy/config/:/config/:rw - - ./volumes/static/:/srv/static/:ro - - ./volumes/media/:/srv/media/:ro + - ./volumes/django/static/:/srv/static/:ro environment: - HOSTNAME=${HOSTNAME:-localhost} - LETSENCRYPT_EMAIL=${LETSENCRYPT_EMAIL:-internal} @@ -27,7 +26,7 @@ services: - "8000" env_file: ./common.env environment: - - DJANGO_SETTINGS_MODULE=inventory_settings + - DJANGO_SETTINGS_MODULE=docker_settings - HOSTNAME=${HOSTNAME:-localhost} links: - postgres:postgres @@ -35,12 +34,12 @@ services: - postgres - caddy volumes: - - ./inventory/:/inventory/ - - ./volumes/static/:/static/:rw - - ./volumes/media/:/media/:rw + - ./django/:/django/:ro + - ./volumes/django/:/django_volumes/:rw + - ./volumes/django/static/:/static/:rw # e.g.: pip cache must be the same value as $XDG_CACHE_HOME ! - ./volumes/cache/:/var/cache/:rw - entrypoint: /inventory/entrypoint.sh + entrypoint: /django/entrypoint.sh postgres: # https://hub.docker.com/_/postgres diff --git a/deployment/inventory/kill_python.sh b/deployment/inventory/kill_python.sh deleted file mode 100755 index b67e706..0000000 --- a/deployment/inventory/kill_python.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -set -ex - -for pid in $(pidof python3); do kill $pid; done diff --git a/pyproject.toml b/pyproject.toml index ad9f3b5..4532a4a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -126,7 +126,7 @@ norecursedirs = ".* .git __pycache__ coverage* dist volumes" # -p no:warnings addopts = """ --import-mode=importlib - --ignore-glob=deployment/inventory/* + --ignore-glob=deployment/django/* --reuse-db --nomigrations --cov=. diff --git a/src/inventory_project/settings/base.py b/src/inventory_project/settings/base.py index e7a8591..54ee983 100644 --- a/src/inventory_project/settings/base.py +++ b/src/inventory_project/settings/base.py @@ -8,13 +8,31 @@ from pathlib import Path as __Path from django.utils.translation import ugettext_lazy as _ -# Build paths relative to the current working directory: -BASE_PATH = __Path().cwd().resolve() -print(f'BASE_PATH:{BASE_PATH}') - +############################################################################### # Build paths relative to the project root: PROJECT_PATH = __Path(__file__).parent.parent.parent +print(f'PROJECT_PATH:{PROJECT_PATH}') + +if __Path('/.dockerenv').is_file(): + # We are inside a docker container + BASE_PATH = __Path('/django_volumes') + assert BASE_PATH.is_dir() +else: + # Build paths relative to the current working directory: + BASE_PATH = __Path().cwd().resolve() + +print(f'BASE_PATH:{BASE_PATH}') + +# Paths with Django dev. server: +# BASE_PATH...: .../django-for-runners +# PROJECT_PATH: .../django-for-runners/src +# +# Paths in Docker container: +# BASE_PATH...: /for_runners_volumes +# PROJECT_PATH: /usr/local/lib/python3.9/site-packages + +############################################################################### # SECURITY WARNING: don't run with debug turned on in production!