BTHLABS-49: WIP
This commit is contained in:
parent
6b959bb9ea
commit
53fdc8e12e
|
@ -1,12 +1,12 @@
|
||||||
ARG APP_USER_UID=1000
|
ARG APP_USER_UID=1000
|
||||||
ARG APP_USER_GID=1000
|
ARG APP_USER_GID=1000
|
||||||
ARG IMAGE_TAG=development.00000000
|
ARG IMAGE_ID=development.00000000
|
||||||
|
|
||||||
FROM docker-hosted.nexus.bthlabs.pl/hotpocket/base:build-node-20250816-01 AS development
|
FROM docker-hosted.nexus.bthlabs.pl/hotpocket/base:build-node-20250819-01 AS development
|
||||||
|
|
||||||
ARG APP_USER_UID
|
ARG APP_USER_UID
|
||||||
ARG APP_USER_GID
|
ARG APP_USER_GID
|
||||||
ARG IMAGE_TAG
|
ARG IMAGE_ID
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
|
@ -17,11 +17,11 @@ USER app
|
||||||
|
|
||||||
VOLUME ["/srv/node_modules", "/srv/venv"]
|
VOLUME ["/srv/node_modules", "/srv/venv"]
|
||||||
|
|
||||||
FROM docker-hosted.nexus.bthlabs.pl/hotpocket/base:build-python-20250816-01 AS deployment-build
|
FROM docker-hosted.nexus.bthlabs.pl/hotpocket/base:build-python-20250819-01 AS deployment-build
|
||||||
|
|
||||||
ARG APP_USER_UID
|
ARG APP_USER_UID
|
||||||
ARG APP_USER_GID
|
ARG APP_USER_GID
|
||||||
ARG IMAGE_TAG
|
ARG IMAGE_ID
|
||||||
|
|
||||||
RUN mkdir /srv/app/hotpocket_backend /srv/packages/common /srv/packages/soa
|
RUN mkdir /srv/app/hotpocket_backend /srv/packages/common /srv/packages/soa
|
||||||
COPY --chown=$APP_USER_UID:$APP_USER_GID backend/hotpocket_backend/ /srv/app/hotpocket_backend/
|
COPY --chown=$APP_USER_UID:$APP_USER_GID backend/hotpocket_backend/ /srv/app/hotpocket_backend/
|
||||||
|
@ -36,13 +36,13 @@ RUN poetry install --only main,deployment && \
|
||||||
rm -f hotpocket_backend/settings/deployment/build.py && \
|
rm -f hotpocket_backend/settings/deployment/build.py && \
|
||||||
rm -rf node_modules/
|
rm -rf node_modules/
|
||||||
|
|
||||||
FROM docker-hosted.nexus.bthlabs.pl/hotpocket/base:base-20250816-01 AS deployment-base
|
FROM docker-hosted.nexus.bthlabs.pl/hotpocket/base:base-20250819-01 AS deployment-base
|
||||||
|
|
||||||
ARG APP_USER_UID
|
ARG APP_USER_UID
|
||||||
ARG APP_USER_GID
|
ARG APP_USER_GID
|
||||||
ARG IMAGE_TAG
|
ARG IMAGE_ID
|
||||||
|
|
||||||
ENV HOTPOCKET_BACKEND_IMAGE_TAG=${IMAGE_TAG}
|
ENV HOTPOCKET_BACKEND_IMAGE_ID=${IMAGE_ID}
|
||||||
ENV PYTHONPATH="/srv/local"
|
ENV PYTHONPATH="/srv/local"
|
||||||
|
|
||||||
COPY --from=deployment-build /srv/app /srv/app
|
COPY --from=deployment-build /srv/app /srv/app
|
||||||
|
@ -50,8 +50,7 @@ COPY --from=deployment-build /srv/packages /srv/packages
|
||||||
COPY --from=deployment-build /srv/venv /srv/venv
|
COPY --from=deployment-build /srv/venv /srv/venv
|
||||||
COPY --chown=$APP_USER_UID:$APP_USER_GID backend/ops/bin/*.sh /srv/bin/
|
COPY --chown=$APP_USER_UID:$APP_USER_GID backend/ops/bin/*.sh /srv/bin/
|
||||||
COPY --chown=$APP_USER_UID:$APP_USER_GID backend/ops/deployment/gunicorn.conf.py backend/ops/deployment/gunicorn.logging.conf /srv/lib/
|
COPY --chown=$APP_USER_UID:$APP_USER_GID backend/ops/deployment/gunicorn.conf.py backend/ops/deployment/gunicorn.logging.conf /srv/lib/
|
||||||
RUN mkdir /srv/entrypoint.d /srv/local && \
|
RUN chown -R $APP_USER_UID:$APP_USER_GID /srv
|
||||||
chown -R $APP_USER_UID:$APP_USER_GID /srv
|
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
|
@ -71,7 +70,7 @@ FROM deployment-base AS deployment
|
||||||
|
|
||||||
ARG APP_USER_UID
|
ARG APP_USER_UID
|
||||||
ARG APP_USER_GID
|
ARG APP_USER_GID
|
||||||
ARG IMAGE_TAG
|
ARG IMAGE_ID
|
||||||
|
|
||||||
VOLUME ["/srv/run", "/srv/uploads"]
|
VOLUME ["/srv/run", "/srv/uploads"]
|
||||||
|
|
||||||
|
@ -79,7 +78,7 @@ FROM deployment-base AS aio
|
||||||
|
|
||||||
ARG APP_USER_UID
|
ARG APP_USER_UID
|
||||||
ARG APP_USER_GID
|
ARG APP_USER_GID
|
||||||
ARG IMAGE_TAG
|
ARG IMAGE_ID
|
||||||
|
|
||||||
ENV DJANGO_SETTINGS_MODULE=hotpocket_backend.settings.aio
|
ENV DJANGO_SETTINGS_MODULE=hotpocket_backend.settings.aio
|
||||||
ENV HOTPOCKET_BACKEND_ENV=aio
|
ENV HOTPOCKET_BACKEND_ENV=aio
|
||||||
|
|
|
@ -24,7 +24,7 @@ class PSettings(typing.Protocol):
|
||||||
|
|
||||||
SITE_TITLE: str
|
SITE_TITLE: str
|
||||||
SITE_SHORT_TITLE: str
|
SITE_SHORT_TITLE: str
|
||||||
IMAGE_TAG: str
|
IMAGE_ID: str
|
||||||
|
|
||||||
SAVES_SAVE_ADAPTER: str
|
SAVES_SAVE_ADAPTER: str
|
||||||
SAVES_ASSOCIATION_ADAPTER: str
|
SAVES_ASSOCIATION_ADAPTER: str
|
||||||
|
|
|
@ -15,7 +15,7 @@ def site_title(request: HttpRequest) -> dict:
|
||||||
|
|
||||||
def image_tag(request: HttpRequest) -> dict:
|
def image_tag(request: HttpRequest) -> dict:
|
||||||
return {
|
return {
|
||||||
'IMAGE_TAG': settings.IMAGE_TAG,
|
'IMAGE_ID': settings.IMAGE_ID,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover,user-scalable=no">
|
<meta name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover,user-scalable=no">
|
||||||
<meta name="generator" content="pl.bthlabs.HotPocket.backend@{{ IMAGE_TAG }}">
|
<meta name="generator" content="pl.bthlabs.HotPocket.backend@{{ IMAGE_ID }}">
|
||||||
<meta name="theme-color" content="#2b3035"/>
|
<meta name="theme-color" content="#2b3035"/>
|
||||||
<title>{% block title %}{% translate 'Not Found' %}{% endblock %} | {{ SITE_TITLE }}</title>
|
<title>{% block title %}{% translate 'Not Found' %}{% endblock %} | {{ SITE_TITLE }}</title>
|
||||||
<link href="{% static 'ui/css/bootstrap.min.css' %}" rel="stylesheet">
|
<link href="{% static 'ui/css/bootstrap.min.css' %}" rel="stylesheet">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<p class="mb-0 mt-2 text-center text-muted ui-uname">
|
<p class="mb-0 mt-2 text-center text-muted ui-uname">
|
||||||
<span>
|
<span>
|
||||||
<a href="https://hotpocket.app/" target="_blank" rel="noopener noreferer">{{ SITE_TITLE }}</a>
|
<a href="https://hotpocket.app/" target="_blank" rel="noopener noreferer">{{ SITE_TITLE }}</a>
|
||||||
(<code>{{ IMAGE_TAG }}</code>)
|
(<code>{{ IMAGE_ID }}</code>)
|
||||||
</span>
|
</span>
|
||||||
<br>
|
<br>
|
||||||
<span>Copyright © 2025-present by BTHLabs. All rights reserved.</span>
|
<span>Copyright © 2025-present by BTHLabs. All rights reserved.</span>
|
||||||
|
|
|
@ -189,7 +189,7 @@ SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
|
||||||
AUTHENTICATION_BACKENDS = [
|
AUTHENTICATION_BACKENDS = [
|
||||||
]
|
]
|
||||||
|
|
||||||
IMAGE_TAG = os.getenv('HOTPOCKET_BACKEND_IMAGE_TAG', 'development.00000000')
|
IMAGE_ID = os.getenv('HOTPOCKET_BACKEND_IMAGE_ID', 'development.00000000')
|
||||||
|
|
||||||
MODEL_AUTH_IS_DISABLED = (
|
MODEL_AUTH_IS_DISABLED = (
|
||||||
os.getenv('HOTPOCKET_BACKEND_MODEL_AUTH_IS_DISABLED', 'false').lower() == 'true'
|
os.getenv('HOTPOCKET_BACKEND_MODEL_AUTH_IS_DISABLED', 'false').lower() == 'true'
|
||||||
|
|
|
@ -13,7 +13,7 @@ cat <<EOF
|
||||||
|_|
|
|_|
|
||||||
production
|
production
|
||||||
|
|
||||||
HotPocket v1.0.0rc1 [${HOTPOCKET_BACKEND_IMAGE_TAG}] (https://htpocket.app/)
|
HotPocket v1.0.0rc1 [${HOTPOCKET_BACKEND_IMAGE_ID}] (https://htpocket.app/)
|
||||||
Copyright 2025-present by BTHLabs. All rights reserved. (https://bthlabs.pl/)
|
Copyright 2025-present by BTHLabs. All rights reserved. (https://bthlabs.pl/)
|
||||||
Licensed under BTHLabs Source Available License Agreement
|
Licensed under BTHLabs Source Available License Agreement
|
||||||
EOF
|
EOF
|
||||||
|
@ -21,12 +21,12 @@ EOF
|
||||||
export PYTHONPATH="/srv/app:$PYTHONPATH"
|
export PYTHONPATH="/srv/app:$PYTHONPATH"
|
||||||
|
|
||||||
if [ -n "${HOTPOCKET_BACKEND_RUN_MIGRATIONS}" ];then
|
if [ -n "${HOTPOCKET_BACKEND_RUN_MIGRATIONS}" ];then
|
||||||
echo; echo "Running migrations..."
|
echo; echo "--- Running migrations..."
|
||||||
${VIRTUAL_ENV}/bin/python /srv/app/manage.py migrate
|
${VIRTUAL_ENV}/bin/python /srv/app/manage.py migrate
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n "${HOTPOCKET_BACKEND_INITIAL_ACCOUNT_USERNAME}" && -n "${HOTPOCKET_BACKEND_INITIAL_ACCOUNT_PASSWORD}" ]]; then
|
if [[ -n "${HOTPOCKET_BACKEND_INITIAL_ACCOUNT_USERNAME}" && -n "${HOTPOCKET_BACKEND_INITIAL_ACCOUNT_PASSWORD}" ]]; then
|
||||||
echo; echo "Creating initial Account..."
|
echo; echo "--- Creating initial Account..."
|
||||||
${VIRTUAL_ENV}/bin/python /srv/app/manage.py create_initial_account "${HOTPOCKET_BACKEND_INITIAL_ACCOUNT_USERNAME}" "${HOTPOCKET_BACKEND_INITIAL_ACCOUNT_PASSWORD}"
|
${VIRTUAL_ENV}/bin/python /srv/app/manage.py create_initial_account "${HOTPOCKET_BACKEND_INITIAL_ACCOUNT_USERNAME}" "${HOTPOCKET_BACKEND_INITIAL_ACCOUNT_PASSWORD}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -34,8 +34,8 @@ if [ "${HOTPOCKET_BACKEND_ENV}" = "aio" ];then
|
||||||
mkdir -p "${HOTPOCKET_BACKEND_UPLOADS_PATH:-/srv/run/uploads}"
|
mkdir -p "${HOTPOCKET_BACKEND_UPLOADS_PATH:-/srv/run/uploads}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo; echo "Running entrypoing.d parts..."
|
echo; echo "--- Running entrypoint.d parts..."
|
||||||
find "/srv/entrypoint.d/" -follow -type f -print | sort -V | while read -r ENTRYPOINT_PART; do
|
find "/srv/etc/entrypoint.d/" -follow -type f -print | sort -V | while read -r ENTRYPOINT_PART; do
|
||||||
case "$ENTRYPOINT_PART" in
|
case "$ENTRYPOINT_PART" in
|
||||||
*.sh)
|
*.sh)
|
||||||
echo "$0: Executing ${ENTRYPOINT_PART}...";
|
echo "$0: Executing ${ENTRYPOINT_PART}...";
|
||||||
|
@ -48,6 +48,6 @@ find "/srv/entrypoint.d/" -follow -type f -print | sort -V | while read -r ENTRY
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
echo; echo "Setup done, booting the app..."; echo
|
echo; echo "--- Setup done, booting the app..."; echo
|
||||||
|
|
||||||
exec /usr/bin/dumb-init "$@"
|
exec /usr/bin/dumb-init "$@"
|
||||||
|
|
|
@ -25,7 +25,7 @@ RUN if [ ! $(getent group ${APP_USER_GID}) ];then groupadd -g ${APP_USER_GID} ap
|
||||||
apt-get install --no-install-recommends -y curl iputils-ping less net-tools vim-tiny wget && \
|
apt-get install --no-install-recommends -y curl iputils-ping less net-tools vim-tiny wget && \
|
||||||
(curl -sSL https://install.python-poetry.org | python -) && \
|
(curl -sSL https://install.python-poetry.org | python -) && \
|
||||||
python3.12 -m venv ${VIRTUAL_ENV} && \
|
python3.12 -m venv ${VIRTUAL_ENV} && \
|
||||||
mkdir /srv/app /srv/bin /srv/lib /srv/log /srv/node_modules /srv/opt /srv/packages /srv/run /srv/tmp /srv/uploads
|
mkdir /srv/app /srv/bin /srv/etc /srv/etc/entrypoint.d/ /srv/lib /srv/local /srv/log /srv/node_modules /srv/opt /srv/packages /srv/run /srv/tmp /srv/uploads
|
||||||
|
|
||||||
COPY --chown=$APP_USER_UID:$APP_USER_GID base/ops/bin/*.sh /srv/bin/
|
COPY --chown=$APP_USER_UID:$APP_USER_GID base/ops/bin/*.sh /srv/bin/
|
||||||
RUN chown -R ${APP_USER_UID}:${APP_USER_GID} /srv
|
RUN chown -R ${APP_USER_UID}:${APP_USER_GID} /srv
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
ARG APP_USER_UID=1000
|
ARG APP_USER_UID=1000
|
||||||
ARG APP_USER_GID=1000
|
ARG APP_USER_GID=1000
|
||||||
ARG IMAGE_TAG=development.00000000
|
ARG IMAGE_ID=development.00000000
|
||||||
|
|
||||||
FROM docker-hosted.nexus.bthlabs.pl/hotpocket/base:build-python-20250816-01 AS development
|
FROM docker-hosted.nexus.bthlabs.pl/hotpocket/base:build-python-20250819-01 AS development
|
||||||
|
|
||||||
ARG APP_USER_UID
|
ARG APP_USER_UID
|
||||||
ARG APP_USER_GID
|
ARG APP_USER_GID
|
||||||
ARG IMAGE_TAG
|
ARG IMAGE_ID
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
|
|
2
tasks.py
2
tasks.py
|
@ -166,7 +166,7 @@ def build(ctx,
|
||||||
),
|
),
|
||||||
f'-t docker-hosted.nexus.bthlabs.pl/hotpocket/{service}:{docker_build_ctx.tag}', # noqa: E501
|
f'-t docker-hosted.nexus.bthlabs.pl/hotpocket/{service}:{docker_build_ctx.tag}', # noqa: E501
|
||||||
f'-f services/{service}/Dockerfile',
|
f'-f services/{service}/Dockerfile',
|
||||||
f'--build-arg IMAGE_TAG={image_tag}',
|
f'--build-arg IMAGE_ID={image_tag}',
|
||||||
f'--target {docker_build_ctx.target}',
|
f'--target {docker_build_ctx.target}',
|
||||||
'services/',
|
'services/',
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user