More production updates/fixes #97
11 changed files with 71 additions and 26 deletions
|
@ -1,3 +1,4 @@
|
|||
__pycache__/
|
||||
staticfiles/
|
||||
media/
|
||||
*.pyc
|
||||
|
|
|
@ -7,10 +7,12 @@ RUN apt update \
|
|||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& apt clean
|
||||
|
||||
COPY ./requirements.txt /app/requirements.txt
|
||||
|
||||
RUN pip install -U --no-cache-dir -r requirements.txt
|
||||
|
||||
COPY . /app
|
||||
|
||||
RUN pip install -U --no-cache-dir -r requirements.txt && \
|
||||
useradd -Mu 1000 righttree && \
|
||||
chown -R righttree:righttree /app
|
||||
|
||||
ENV DJANGO_SETTINGS_MODULE="right_tree.settings"
|
||||
|
||||
USER righttree
|
||||
|
|
|
@ -8,6 +8,6 @@ gunicorn==20.1.0
|
|||
pandas==1.5.3
|
||||
pdfkit==1.0.0
|
||||
PyPDF2==1.28.6
|
||||
redis==4.5.1
|
||||
redis==4.5.3
|
||||
celery[redis]==5.2.7
|
||||
stripe==5.2.0
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
from .celery import app as celery_app
|
||||
|
||||
__all__ = ("celery_app",)
|
|
@ -1,5 +1,10 @@
|
|||
import os
|
||||
|
||||
from celery import Celery
|
||||
|
||||
app = Celery('righttree')
|
||||
|
||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'right_tree.settings')
|
||||
|
||||
app = Celery('right_tree')
|
||||
app.config_from_object('django.conf:settings', namespace='CELERY')
|
||||
app.autodiscover_tasks()
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
# Generated by Django 3.2.17 on 2023-03-29 03:36
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('api', '0015_auto_20230306_1620'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='activationkey',
|
||||
name='key_set',
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='api.activationkeyset'),
|
||||
),
|
||||
]
|
|
@ -222,7 +222,7 @@ class ActivationKey(models.Model):
|
|||
)
|
||||
|
||||
key = models.CharField(max_length=20, unique=True, default=key_default)
|
||||
key_set = models.ForeignKey(ActivationKeySet, on_delete=models.CASCADE, null=True)
|
||||
key_set = models.ForeignKey(ActivationKeySet, on_delete=models.PROTECT, null=True)
|
||||
remaining_activations = models.SmallIntegerField(default=1)
|
||||
creation_date = models.DateTimeField(auto_now_add=True)
|
||||
|
||||
|
|
|
@ -239,7 +239,7 @@ def purchase_key(request):
|
|||
invoice_creation={
|
||||
'enabled': True,
|
||||
'invoice_data': {
|
||||
'description': f'Your product code is {key}',
|
||||
'description': f'Your activation key is {key}',
|
||||
'rendering_options': {'amount_tax_display': 'include_inclusive_tax'},
|
||||
'footer': 'BioSphere Capital Limited',
|
||||
},
|
||||
|
|
|
@ -11,7 +11,6 @@ https://docs.djangoproject.com/en/3.2/ref/settings/
|
|||
"""
|
||||
|
||||
import os
|
||||
import stripe
|
||||
from pathlib import Path
|
||||
|
||||
# Build paths inside the project like this: BASE_DIR / 'subdir'.
|
||||
|
|
|
@ -6,11 +6,6 @@ volumes:
|
|||
|
||||
x-django: &django
|
||||
image: right-tree
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
env_file: .env
|
||||
user: "$UID:$GID"
|
||||
restart: always
|
||||
|
@ -25,6 +20,13 @@ services:
|
|||
- gunicorn
|
||||
- --bind=0.0.0.0:8000
|
||||
- right_tree.wsgi
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
celery:
|
||||
condition: service_healthy
|
||||
|
||||
nginx:
|
||||
container_name: nginx
|
||||
|
@ -54,13 +56,13 @@ services:
|
|||
- POSTGRES_USER=${POSTGRES_USER}
|
||||
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready", "--dbname", "righttree", "--username", "righttree"]
|
||||
test: ["CMD", "pg_isready", "--dbname", "$DATABASE_NAME", "--username", "$DATABASE_USER"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
redis:
|
||||
image: redis:7.0.8
|
||||
image: redis:7.0.10
|
||||
restart: always
|
||||
container_name: redis
|
||||
expose:
|
||||
|
@ -84,6 +86,11 @@ services:
|
|||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "celery", "-A", "right_tree.api", "inspect", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
|
|
|
@ -6,11 +6,6 @@ volumes:
|
|||
|
||||
x-django: &django
|
||||
image: right-tree
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
volumes:
|
||||
- ./backend:/app
|
||||
env_file: .env
|
||||
|
@ -21,6 +16,13 @@ services:
|
|||
backend:
|
||||
<<: *django
|
||||
container_name: backend
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
celery:
|
||||
condition: service_healthy
|
||||
expose:
|
||||
- "8000"
|
||||
command:
|
||||
|
@ -56,7 +58,7 @@ services:
|
|||
environment:
|
||||
POSTGRES_PASSWORD: postgres
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready", "--dbname", "righttree", "--username", "righttree"]
|
||||
test: ["CMD", "pg_isready", "--dbname", "$DATABASE_NAME", "--username", "$DATABASE_USER"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
@ -75,7 +77,7 @@ services:
|
|||
- 80:80
|
||||
|
||||
redis:
|
||||
image: redis:7.0.8
|
||||
image: redis:7.0.10
|
||||
restart: unless-stopped
|
||||
container_name: redis
|
||||
volumes:
|
||||
|
@ -94,14 +96,21 @@ services:
|
|||
celery:
|
||||
<<: *django
|
||||
container_name: celery
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
command:
|
||||
- celery
|
||||
- -A
|
||||
- right_tree.api
|
||||
- worker
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
healthcheck:
|
||||
test: ["CMD", "celery", "-A", "right_tree.api", "inspect", "ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
|
|
Loading…
Reference in a new issue