You've already forked hotpocket
BTHLABS-63: Production deployment workflow
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
DJANGO_SETTINGS_MODULE="{{ hotpocket_app.backend.webapp.settings_module|default('hotpocket_backend.settings.aio')}}"
|
||||
HOTPOCKET_BACKEND_ENV="{{ hotpocket_app.backend.env|default('aio') }}"
|
||||
HOTPOCKET_BACKEND_MODEL_AUTH_IS_DISABLED="{% if hotpocket_app.backend.model_auth_is_disabled %}true{% else %}false{% endif %}"
|
||||
|
||||
{% if hotpocket_app.backend.oidc.enabled %}HOTPOCKET_BACKEND_OIDC_PAYLOAD='{"endpoint":"{{ hotpocket_app.backend.oidc.endpoint }}","key":"{{ hotpocket_app_secrets.backend.oidc.key }}","secret":"{{ hotpocket_app_secrets.backend.oidc.secret }}","display_name":"{{ hotpocket_app.backend.oidc.display_name }}"}'{% else %}#noop{% endif %}
|
||||
|
||||
{% for extra_env in hotpocket_app.backend.extra_env|default([]) %}
|
||||
{{ extra_env }}
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,7 @@
|
||||
HOTPOCKET_BACKEND_SECRET_KEY: "{{ hotpocket_app_secrets.backend.webapp.secret_key }}"
|
||||
HOTPOCKET_BACKEND_ALLOWED_HOSTS="{{ hotpocket_app.backend.webapp.allowed_hosts|join(',') }}"
|
||||
HOTPOCKET_BACKEND_INITIAL_ACCOUNT_USERNAME: "{{ hotpocket_app_secrets.backend.webapp.initial_account.username }}"
|
||||
HOTPOCKET_BACKEND_INITIAL_ACCOUNT_PASSWORD: "{{ hotpocket_app_secrets.backend.webapp.initial_account.password }}"
|
||||
{% for extra_env in hotpocket_app.backend.webapp.extra_env|default([]) %}
|
||||
{{ extra_env }}
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,28 @@
|
||||
services:
|
||||
backend-webapp:
|
||||
image: "docker-hosted.nexus.bthlabs.pl/hotpocket/backend:{{ hotpocket_app.backend.image_tag }}"
|
||||
command:
|
||||
- "/srv/venv/bin/gunicorn"
|
||||
- "-c"
|
||||
- "/srv/lib/gunicorn.conf.py"
|
||||
- "-b"
|
||||
- "unix:///srv/run/gunicorn.sock"
|
||||
- "hotpocket_backend.wsgi:application"
|
||||
logging:
|
||||
driver: "loki"
|
||||
options:
|
||||
loki-url: "{{ hotpocket_app.loki.url }}"
|
||||
loki-external-labels: "{{ hotpocket_app.backend.webapp.loki.external_labels }}"
|
||||
labels: "node"
|
||||
labels:
|
||||
node: "{{ hotpocket_app.loki.node }}"
|
||||
env_file:
|
||||
- "etc/backend_base.env"
|
||||
- "etc/backend_webapp.env"
|
||||
extra_hosts: [{% for extra_host in hotpocket_app.docker.extra_hosts|default([]) %}"{{ extra_host }}"{% endfor %}]
|
||||
restart: "unless-stopped"
|
||||
volumes:
|
||||
- "{{ hotpocket_app.deployment_directory }}/etc/backend:/srv/etc"
|
||||
- "{{ hotpocket_app.deployment_directory }}/lib/backend:/srv/lib/backend"
|
||||
- "{{ hotpocket_app.deployment_directory }}/run/backend-webapp:/srv/run"
|
||||
- "{{ hotpocket_app.deployment_directory }}/run/uploads:/srv/uploads"
|
||||
@@ -0,0 +1,8 @@
|
||||
DJANGO_SETTINGS_MODULE="{{ hotpocket_app.backend.admin.settings_module|default('hotpocket_backend.settings.deployment.admin')}}"
|
||||
HOTPOCKET_BACKEND_GUNICORN_WORKERS=2
|
||||
HOTPOCKET_BACKEND_APP="admin"
|
||||
HOTPOCKET_BACKEND_SECRET_KEY="{{ hotpocket_app_secrets.backend.admin.secret_key }}"
|
||||
HOTPOCKET_BACKEND_ALLOWED_HOSTS="{{ hotpocket_app.backend.admin.allowed_hosts|join(',') }}"
|
||||
{% for extra_env in hotpocket_app.backend.admin.extra_env|default([]) %}
|
||||
{{ extra_env }}
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,15 @@
|
||||
HOTPOCKET_BACKEND_ENV="{{ hotpocket_app.backend.env|default('deployment') }}"
|
||||
HOTPOCKET_BACKEND_DATABASE_NAME="{{ hotpocket_app.backend.database.name }}"
|
||||
HOTPOCKET_BACKEND_DATABASE_USER="{{ hotpocket_app.backend.database.user }}"
|
||||
HOTPOCKET_BACKEND_DATABASE_PASSWORD="{{ hotpocket_app_secrets.backend.database.password }}"
|
||||
HOTPOCKET_BACKEND_DATABASE_HOST="{{ hotpocket_app.backend.database.host }}"
|
||||
HOTPOCKET_BACKEND_CELERY_BROKER_URL="amqp://{{ hotpocket_app.backend.rabbitmq.user }}:{{ hotpocket_app_secrets.backend.rabbitmq.password }}@{{ hotpocket_app.backend.rabbitmq.host }}/{{ hotpocket_app.backend.rabbitmq.vhost }}"
|
||||
HOTPOCKET_BACKEND_CELERY_RESULT_BACKEND="db+postgresql+psycopg://{{ hotpocket_app.backend.database.user }}:{{ hotpocket_app_secrets.backend.database.password }}@{{ hotpocket_app.backend.database.host }}/{{ hotpocket_app.backend.database.name }}"
|
||||
HOTPOCKET_BACKEND_MODEL_AUTH_IS_DISABLED="{% if hotpocket_app.backend.model_auth_is_disabled %}true{% else %}false{% endif %}"
|
||||
|
||||
{% if hotpocket_app.backend.oidc.enabled %}HOTPOCKET_BACKEND_OIDC_PAYLOAD='{"endpoint":"{{ hotpocket_app.backend.oidc.endpoint }}","key":"{{ hotpocket_app_secrets.backend.oidc.key }}","secret":"{{ hotpocket_app_secrets.backend.oidc.secret }}","display_name":"{{ hotpocket_app.backend.oidc.display_name }}"}'{% else %}#noop{% endif %}
|
||||
|
||||
{% for extra_env in hotpocket_app.backend.extra_env|default([]) %}
|
||||
{{ extra_env }}
|
||||
{% endfor %}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
DJANGO_SETTINGS_MODULE="{{ hotpocket_app.backend.webapp.settings_module|default('hotpocket_backend.settings.deployment.webapp')}}"
|
||||
HOTPOCKET_BACKEND_APP="webapp"
|
||||
HOTPOCKET_BACKEND_SECRET_KEY="{{ hotpocket_app_secrets.backend.webapp.secret_key }}"
|
||||
HOTPOCKET_BACKEND_ALLOWED_HOSTS="{{ hotpocket_app.backend.webapp.allowed_hosts|join(',') }}"
|
||||
HOTPOCKET_BACKEND_SAVES_SAVE_ADAPTER="hotpocket_backend.apps.saves.adapters.postgres:PostgresSaveAdapter"
|
||||
HOTPOCKET_BACKEND_SAVES_ASSOCIATION_ADAPTER="hotpocket_backend.apps.saves.adapters.postgres:PostgresAssociationAdapter"
|
||||
{% for extra_env in hotpocket_app.backend.webapp.extra_env|default([]) %}
|
||||
{{ extra_env }}
|
||||
{% endfor %}
|
||||
@@ -0,0 +1,118 @@
|
||||
services:
|
||||
backend-webapp:
|
||||
image: "docker-hosted.nexus.bthlabs.pl/hotpocket/backend:{{ hotpocket_app.backend.image_tag }}"
|
||||
command:
|
||||
- "/srv/venv/bin/gunicorn"
|
||||
- "-c"
|
||||
- "/srv/lib/gunicorn.conf.py"
|
||||
- "-b"
|
||||
- "unix:///srv/run/gunicorn.sock"
|
||||
- "hotpocket_backend.wsgi:application"
|
||||
logging:
|
||||
driver: "loki"
|
||||
options:
|
||||
loki-url: "{{ hotpocket_app.loki.url }}"
|
||||
loki-external-labels: "{{ hotpocket_app.backend.webapp.loki.external_labels }}"
|
||||
labels: "node"
|
||||
labels:
|
||||
node: "{{ hotpocket_app.loki.node }}"
|
||||
env_file:
|
||||
- "etc/backend_base.env"
|
||||
- "etc/backend_webapp.env"
|
||||
extra_hosts: [{% for extra_host in hotpocket_app.docker.extra_hosts %}"{{ extra_host }}"{% endfor %}]
|
||||
restart: "unless-stopped"
|
||||
volumes:
|
||||
- "{{ hotpocket_app.deployment_directory }}/etc/backend:/srv/etc"
|
||||
- "{{ hotpocket_app.deployment_directory }}/lib/backend:/srv/lib/backend"
|
||||
- "{{ hotpocket_app.deployment_directory }}/run/backend-webapp:/srv/run"
|
||||
- "{{ hotpocket_app.deployment_directory }}/run/uploads:/srv/uploads"
|
||||
|
||||
backend-admin:
|
||||
image: "docker-hosted.nexus.bthlabs.pl/hotpocket/backend:{{ hotpocket_app.backend.image_tag }}"
|
||||
command:
|
||||
- "/srv/venv/bin/gunicorn"
|
||||
- "-c"
|
||||
- "/srv/lib/gunicorn.conf.py"
|
||||
- "-b"
|
||||
- "unix:///srv/run/gunicorn.sock"
|
||||
- "hotpocket_backend.wsgi:application"
|
||||
logging:
|
||||
driver: "loki"
|
||||
options:
|
||||
loki-url: "{{ hotpocket_app.loki.url }}"
|
||||
loki-external-labels: "{{ hotpocket_app.backend.admin.loki.external_labels }}"
|
||||
labels: "node"
|
||||
labels:
|
||||
node: "{{ hotpocket_app.loki.node }}"
|
||||
env_file:
|
||||
- "etc/backend_base.env"
|
||||
- "etc/backend_admin.env"
|
||||
extra_hosts: [{% for extra_host in hotpocket_app.docker.extra_hosts %}"{{ extra_host }}"{% endfor %}]
|
||||
restart: "unless-stopped"
|
||||
volumes:
|
||||
- "{{ hotpocket_app.deployment_directory }}/etc/backend:/srv/etc"
|
||||
- "{{ hotpocket_app.deployment_directory }}/lib/backend:/srv/lib/backend"
|
||||
- "{{ hotpocket_app.deployment_directory }}/run/backend-admin:/srv/run"
|
||||
- "{{ hotpocket_app.deployment_directory }}/run/uploads:/srv/uploads"
|
||||
|
||||
backend-celery-worker:
|
||||
image: "docker-hosted.nexus.bthlabs.pl/hotpocket/backend:{{ hotpocket_app.backend.image_tag }}"
|
||||
command:
|
||||
- "/srv/venv/bin/celery"
|
||||
- "-A"
|
||||
- "hotpocket_backend.celery:app"
|
||||
- "worker"
|
||||
- "-l"
|
||||
- "INFO"
|
||||
- "-Q"
|
||||
- "celery,webapp"
|
||||
- "-c"
|
||||
- "{{ hotpocket_app.backend.celery_worker.concurrency }}"
|
||||
logging:
|
||||
driver: "loki"
|
||||
options:
|
||||
loki-url: "{{ hotpocket_app.loki.url }}"
|
||||
loki-external-labels: "{{ hotpocket_app.backend.celery_worker.loki.external_labels }}"
|
||||
labels: "node"
|
||||
labels:
|
||||
node: "{{ hotpocket_app.loki.node }}"
|
||||
env_file:
|
||||
- "etc/backend_base.env"
|
||||
- "etc/backend_webapp.env"
|
||||
extra_hosts: [{% for extra_host in hotpocket_app.docker.extra_hosts %}"{{ extra_host }}"{% endfor %}]
|
||||
restart: "unless-stopped"
|
||||
volumes:
|
||||
- "{{ hotpocket_app.deployment_directory }}/etc/backend:/srv/etc"
|
||||
- "{{ hotpocket_app.deployment_directory }}/lib/backend:/srv/lib/backend"
|
||||
- "{{ hotpocket_app.deployment_directory }}/run/backend-celery-worker:/srv/run"
|
||||
- "{{ hotpocket_app.deployment_directory }}/run/uploads:/srv/uploads"
|
||||
|
||||
backend-celery-beat:
|
||||
image: "docker-hosted.nexus.bthlabs.pl/hotpocket/backend:{{ hotpocket_app.backend.image_tag }}"
|
||||
command:
|
||||
- "/srv/venv/bin/celery"
|
||||
- "-A"
|
||||
- "hotpocket_backend.celery:app"
|
||||
- "beat"
|
||||
- "-l"
|
||||
- "INFO"
|
||||
- "-s"
|
||||
- "/srv/run/celery-beat-schedule"
|
||||
logging:
|
||||
driver: "loki"
|
||||
options:
|
||||
loki-url: "{{ hotpocket_app.loki.url }}"
|
||||
loki-external-labels: "{{ hotpocket_app.backend.celery_beat.loki.external_labels }}"
|
||||
labels: "node"
|
||||
labels:
|
||||
node: "{{ hotpocket_app.loki.node }}"
|
||||
env_file:
|
||||
- "etc/backend_base.env"
|
||||
- "etc/backend_webapp.env"
|
||||
extra_hosts: [{% for extra_host in hotpocket_app.docker.extra_hosts %}"{{ extra_host }}"{% endfor %}]
|
||||
restart: "unless-stopped"
|
||||
volumes:
|
||||
- "{{ hotpocket_app.deployment_directory }}/etc/backend:/srv/etc"
|
||||
- "{{ hotpocket_app.deployment_directory }}/lib/backend:/srv/lib/backend"
|
||||
- "{{ hotpocket_app.deployment_directory }}/run/backend-celery-beat:/srv/run"
|
||||
- "{{ hotpocket_app.deployment_directory }}/run/uploads:/srv/uploads"
|
||||
@@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=hotpocket_backend.webapp
|
||||
Requires=docker.service
|
||||
After=docker.service
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
WorkingDirectory={{ hotpocket_app.deployment_directory }}
|
||||
ExecStart=/usr/bin/docker compose up -d
|
||||
ExecStop=/usr/bin/docker compose down
|
||||
TimeoutStartSec=0
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user