diff --git a/docker/docker-py3-kms-minimal/Dockerfile b/docker/docker-py3-kms-minimal/Dockerfile index 789d562..883d12e 100644 --- a/docker/docker-py3-kms-minimal/Dockerfile +++ b/docker/docker-py3-kms-minimal/Dockerfile @@ -12,9 +12,7 @@ ENV HWID RANDOM ENV LOGLEVEL INFO ENV LOGFILE STDOUT ENV LOGSIZE "" -ENV TYPE MINIMAL -COPY ./py-kms /home/py-kms COPY docker/docker-py3-kms-minimal/requirements.txt /home/py-kms/requirements.txt RUN apk add --no-cache --update \ bash \ @@ -30,6 +28,7 @@ bash \ # Fix undefined timezone, in case the user did not mount the /etc/localtime && ln -sf /usr/share/zoneinfo/UTC /etc/localtime +COPY ./py-kms /home/py-kms COPY docker/entrypoint.py /usr/bin/entrypoint.py COPY docker/start.py /usr/bin/start.py diff --git a/docker/docker-py3-kms/Dockerfile b/docker/docker-py3-kms/Dockerfile index 70a5b9b..83f8934 100644 --- a/docker/docker-py3-kms/Dockerfile +++ b/docker/docker-py3-kms/Dockerfile @@ -14,7 +14,6 @@ ENV LOGFILE STDOUT ENV LOGSIZE "" ENV TZ America/Chicago -COPY py-kms /home/py-kms/ COPY docker/docker-py3-kms/requirements.txt /home/py-kms/ RUN apk add --no-cache --update \ bash \ @@ -33,14 +32,17 @@ RUN apk add --no-cache --update \ # Fix undefined timezone, in case the user did not mount the /etc/localtime && ln -sf /usr/share/zoneinfo/UTC /etc/localtime +COPY py-kms /home/py-kms/ COPY docker/entrypoint.py /usr/bin/entrypoint.py COPY docker/start.py /usr/bin/start.py +COPY LICENSE /LICENSE RUN chmod 755 /usr/bin/entrypoint.py WORKDIR /home/py-kms EXPOSE ${PORT}/tcp +EXPOSE 8080/tcp HEALTHCHECK --interval=5m --timeout=3s --start-period=10s --retries=4 CMD echo | nc -z ${IP%% *} ${PORT} || exit 1 diff --git a/docker/start.py b/docker/start.py index f164fa7..0b2701f 100644 --- a/docker/start.py +++ b/docker/start.py @@ -28,8 +28,11 @@ log_file = os.environ.get('LOGFILE', 'STDOUT') listen_ip = os.environ.get('IP', '::').split() listen_port = os.environ.get('PORT', '1688') - def start_kms(): + # Make sure the full path to the db exists + if not os.path.exists(os.path.dirname(dbPath)): + os.makedirs(os.path.dirname(dbPath), exist_ok=True) + # Build the command to execute command = [PYTHON3, '-u', 'pykms_Server.py', listen_ip[0], listen_port] for (arg, env) in argumentVariableMapping.items(): @@ -41,10 +44,22 @@ def start_kms(): for i in range(1, len(listen_ip)): command.append("-n") command.append(listen_ip[i] + "," + listen_port) + command.append('-s') + command.append(dbPath) loggersrv.debug("server_cmd: %s" % (" ".join(str(x) for x in command).strip())) pykms_process = subprocess.Popen(command) + try: + time.sleep(2) # Wait for the server to start up + pykms_webui_env = os.environ.copy() + pykms_webui_env['PYKMS_SQLITE_DB_PATH'] = dbPath + pykms_webui_env['PORT'] = '8080' + pykms_webui_env['PYKMS_LICENSE_PATH'] = '/LICENSE' + pykms_webui_process = subprocess.Popen(['gunicorn', '--log-level', os.environ.get('LOGLEVEL'), 'pykms_WebUI:app'], env=pykms_webui_env) + except Exception as e: + loggersrv.error("Failed to start webui: %s" % e) + try: pykms_process.wait() except Exception: @@ -52,7 +67,7 @@ def start_kms(): pass except KeyboardInterrupt: pass - + pykms_webui_process.terminate() pykms_process.terminate() diff --git a/py-kms/pykms_WebUI.py b/py-kms/pykms_WebUI.py index 8b2ab06..2a61341 100644 --- a/py-kms/pykms_WebUI.py +++ b/py-kms/pykms_WebUI.py @@ -84,7 +84,7 @@ def root(): @app.route('/license') def license(): _increase_serve_count() - with open('../LICENSE', 'r') as f: + with open(os.environ.get('PYKMS_LICENSE_PATH', '../LICENSE'), 'r') as f: return render_template( 'license.html', path='/license/',