e11sync-gunicorn is a bit easier to use
This commit is contained in:
parent
4555d5f1f9
commit
96181f5075
@ -1,13 +1,29 @@
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from os import environ
|
from os import environ, path
|
||||||
|
|
||||||
|
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||||
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||||
|
|
||||||
_DEBUG = bool(environ.get('E11SYNC_DEBUG', False))
|
_DEBUG = bool(environ.get('E11SYNC_DEBUG', False))
|
||||||
_COMPRESS_OFFLINE = bool(environ.get('E11SYNC_COMPRESS_OFFLINE', False))
|
_COMPRESS_OFFLINE = bool(environ.get('E11SYNC_COMPRESS_OFFLINE', False))
|
||||||
_STATIC_ROOT = environ.get('E11SYNC_STATIC_ROOT', '/tmp/e11sync-static')
|
_STATIC_ROOT = environ.get('E11SYNC_STATIC_ROOT', '/tmp/e11sync-static')
|
||||||
_GEOIP_PATH = environ.get('GEOIP_PATH')
|
_GEOIP_PATH = environ.get('GEOIP_PATH')
|
||||||
|
if db := environ.get('E11SYNC_DATABASE_PATH'):
|
||||||
|
_DATABASE_PATH = db
|
||||||
|
else:
|
||||||
|
if statedir := environ.get('STATE_DIRECTORY'):
|
||||||
|
_DATABASE_PATH = path.join(statedir, 'db.sqlite3')
|
||||||
|
else:
|
||||||
|
_DATABASE_PATH = BASE_DIR / 'db.sqlite3'
|
||||||
|
|
||||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
# otherwise it gets printed twice
|
||||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
if not environ.get("E11SYNC_DEBUG_PRINTED"):
|
||||||
|
print("DEBUG={}".format(_DEBUG))
|
||||||
|
print("COMPRESS_OFFLINE={}".format(_COMPRESS_OFFLINE))
|
||||||
|
print("STATIC_ROOT={}".format(_STATIC_ROOT))
|
||||||
|
print("GEOIP_PATH={}".format(_GEOIP_PATH))
|
||||||
|
print("DATABASE_PATH={}".format(_DATABASE_PATH))
|
||||||
|
environ["E11SYNC_DEBUG_PRINTED"] = "1"
|
||||||
|
|
||||||
########################################
|
########################################
|
||||||
## No more side effects after this place
|
## No more side effects after this place
|
||||||
@ -67,7 +83,7 @@ WSGI_APPLICATION = 'e11sync.wsgi.application'
|
|||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.sqlite3',
|
'ENGINE': 'django.db.backends.sqlite3',
|
||||||
'NAME': BASE_DIR / 'db.sqlite3',
|
'NAME': _DATABASE_PATH,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
18
flake.nix
18
flake.nix
@ -68,8 +68,8 @@
|
|||||||
'';
|
'';
|
||||||
installPhase = ''mv static $out'';
|
installPhase = ''mv static $out'';
|
||||||
};
|
};
|
||||||
packages.e11sync-gunicorn = pkgs.stdenv.mkDerivation {
|
packages.e11sync = pkgs.stdenv.mkDerivation {
|
||||||
name = "e11sync-gunicorn";
|
name = "e11sync";
|
||||||
propagatedBuildInputs = [runtimeDeps];
|
propagatedBuildInputs = [runtimeDeps];
|
||||||
nativeBuildInputs = [pkgs.makeWrapper];
|
nativeBuildInputs = [pkgs.makeWrapper];
|
||||||
src = self;
|
src = self;
|
||||||
@ -77,7 +77,7 @@
|
|||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
mkdir -p $out;
|
mkdir -p $out;
|
||||||
cp -r ${self}/app $out
|
cp -r ${self}/app $out
|
||||||
makeWrapper ${pkgs.python3Packages.gunicorn}/bin/gunicorn $out/bin/entrypoint \
|
makeWrapper ${pkgs.python3Packages.gunicorn}/bin/gunicorn $out/bin/e11sync-gunicorn \
|
||||||
--chdir $out/app \
|
--chdir $out/app \
|
||||||
--set-default E11SYNC_HTTP_PORT ${toString gunicornPort} \
|
--set-default E11SYNC_HTTP_PORT ${toString gunicornPort} \
|
||||||
--set E11SYNC_DEBUG "" \
|
--set E11SYNC_DEBUG "" \
|
||||||
@ -85,6 +85,9 @@
|
|||||||
--set GEOIP_PATH "${geoip}" \
|
--set GEOIP_PATH "${geoip}" \
|
||||||
--add-flags --bind=127.0.0.1:\$E11SYNC_HTTP_PORT \
|
--add-flags --bind=127.0.0.1:\$E11SYNC_HTTP_PORT \
|
||||||
--add-flags e11sync.wsgi
|
--add-flags e11sync.wsgi
|
||||||
|
|
||||||
|
makeWrapper $out/app/manage.py $out/bin/e11sync \
|
||||||
|
--set GEOIP_PATH "${geoip}"
|
||||||
'';
|
'';
|
||||||
passthru.tests = {
|
passthru.tests = {
|
||||||
simple =
|
simple =
|
||||||
@ -100,12 +103,17 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
checks.e11sync = packages.e11sync-gunicorn.passthru.tests.simple;
|
checks.e11sync = packages.e11sync.passthru.tests.simple;
|
||||||
|
|
||||||
apps.e11sync-gunicorn = {
|
apps.e11sync-gunicorn = {
|
||||||
type = "app";
|
type = "app";
|
||||||
name = "e11sync-gunicorn";
|
name = "e11sync-gunicorn";
|
||||||
program = "${packages.e11sync-gunicorn}/bin/entrypoint";
|
program = let
|
||||||
|
wrapper = pkgs.writeShellScript "wrapper" ''
|
||||||
|
export E11SYNC_DATABASE_PATH=$PWD/db.sqlite3
|
||||||
|
exec ${packages.e11sync}/bin/e11sync-gunicorn
|
||||||
|
'';
|
||||||
|
in "${wrapper}";
|
||||||
};
|
};
|
||||||
|
|
||||||
devShells.default = pkgs.mkShellNoCC {
|
devShells.default = pkgs.mkShellNoCC {
|
||||||
|
Loading…
Reference in New Issue
Block a user