WIP: Docker updates #13
11 changed files with 146 additions and 57 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -15,6 +15,7 @@ media/
|
||||||
!media/keep
|
!media/keep
|
||||||
/CACHE/
|
/CACHE/
|
||||||
/static/
|
/static/
|
||||||
|
/venv/
|
||||||
|
|
||||||
\#*#
|
\#*#
|
||||||
.\#*
|
.\#*
|
||||||
|
|
34
Dockerfile
34
Dockerfile
|
@ -1,6 +1,8 @@
|
||||||
FROM python:3.10.0-alpine3.15
|
FROM python:3.7-alpine3.15
|
||||||
|
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY . /app/
|
||||||
|
|
||||||
RUN apk add --update --no-cache \
|
RUN apk add --update --no-cache \
|
||||||
git \
|
git \
|
||||||
|
@ -8,11 +10,35 @@ RUN apk add --update --no-cache \
|
||||||
openldap-dev \
|
openldap-dev \
|
||||||
python3-dev \
|
python3-dev \
|
||||||
libpq-dev \
|
libpq-dev \
|
||||||
|
libjpeg \
|
||||||
|
libmemcached-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libxslt-dev \
|
||||||
|
zlib \
|
||||||
|
jpeg-dev \
|
||||||
|
zlib-dev \
|
||||||
&& rm -rf /var/cache/apk/*
|
&& rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
# FIX https://github.com/python-ldap/python-ldap/issues/432
|
# FIX https://github.com/python-ldap/python-ldap/issues/432
|
||||||
RUN echo 'INPUT ( libldap.so )' > /usr/lib/libldap_r.so
|
RUN echo 'INPUT ( libldap.so )' > /usr/lib/libldap_r.so
|
||||||
|
|
||||||
COPY requirements.txt ./
|
#RUN LIBRARY_PATH=/lib:/usr/lib /bin/sh -c "pip install --no-cache-dir -r requirements.txt"
|
||||||
|
|
||||||
|
# Create a virtual environment
|
||||||
|
RUN python3 -m venv /venv
|
||||||
|
|
||||||
|
ENV PATH="/venv/bin:$PATH"
|
||||||
|
|
||||||
|
RUN pip install --no-cache-dir --upgrade pip
|
||||||
|
|
||||||
|
#RUN CFLAGS="-Wno-cpp -Wno-unused-function -Wno-unused-variable -Wno-missing-noreturn -I/usr/include/libxml2" pip install lxml
|
||||||
|
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
COPY ./ .
|
|
||||||
|
# Copy entrypoint.sh script and grant execute permissions
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|
||||||
|
# Run migrations and start the server
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ from django.core.urlresolvers import reverse
|
||||||
from django.utils import translation
|
from django.utils import translation
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
from dynamicweb.celery import app
|
from dynamicweb.pr_celery import app
|
||||||
from hosting.models import HostingOrder
|
from hosting.models import HostingOrder
|
||||||
from membership.models import CustomUser
|
from membership.models import CustomUser
|
||||||
from opennebula_api.models import OpenNebulaManager
|
from opennebula_api.models import OpenNebulaManager
|
||||||
|
|
42
docker-compose.yml
Normal file
42
docker-compose.yml
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
# Django app service
|
||||||
|
web:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: dynamicweb
|
||||||
|
command: python manage.py runserver 0.0.0.0:8000
|
||||||
|
volumes:
|
||||||
|
- .:/app
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
|
||||||
|
# PostgreSQL database service
|
||||||
|
db:
|
||||||
|
image: postgres:13
|
||||||
|
container_name: my_postgres_db
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: your_postgres_username
|
||||||
|
POSTGRES_PASSWORD: your_postgres_password
|
||||||
|
POSTGRES_DB: your_database_name
|
||||||
|
volumes:
|
||||||
|
- postgres_data:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
# Nginx service
|
||||||
|
nginx:
|
||||||
|
image: nginx:latest
|
||||||
|
container_name: my_nginx_server
|
||||||
|
volumes:
|
||||||
|
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
depends_on:
|
||||||
|
- web
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres_data:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# This will make sure the app is always imported when
|
# This will make sure the app is always imported when
|
||||||
# Django starts so that shared_task will use this app.
|
# Django starts so that shared_task will use this app.
|
||||||
from .celery import app as celery_app
|
#from .celery import app as celery_app
|
||||||
|
#
|
||||||
__all__ = ['celery_app']
|
#__all__ = ['celery_app']
|
||||||
|
|
|
@ -113,7 +113,7 @@ INSTALLED_APPS = (
|
||||||
'aldryn_common',
|
'aldryn_common',
|
||||||
'aldryn_newsblog',
|
'aldryn_newsblog',
|
||||||
'aldryn_people',
|
'aldryn_people',
|
||||||
'aldryn_reversion',
|
#'aldryn_reversion',
|
||||||
'aldryn_translation_tools',
|
'aldryn_translation_tools',
|
||||||
'treebeard', # utilities for implementing a tree
|
'treebeard', # utilities for implementing a tree
|
||||||
'sekizai', # for javascript and css management
|
'sekizai', # for javascript and css management
|
||||||
|
@ -156,7 +156,7 @@ INSTALLED_APPS = (
|
||||||
'webhook',
|
'webhook',
|
||||||
)
|
)
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES = (
|
MIDDLEWARE = (
|
||||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||||
'utils.middleware.MultipleProxyMiddleware',
|
'utils.middleware.MultipleProxyMiddleware',
|
||||||
'django.middleware.common.CommonMiddleware',
|
'django.middleware.common.CommonMiddleware',
|
||||||
|
@ -239,8 +239,12 @@ CMS_TEMPLATES = (
|
||||||
|
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
'ENGINE': 'django.db.backends.postgresql',
|
||||||
'NAME': 'app',
|
'NAME': 'your_database_name',
|
||||||
|
'USER': 'your_postgres_username',
|
||||||
|
'PASSWORD': 'your_postgres_password',
|
||||||
|
'HOST': 'db',
|
||||||
|
'PORT': '5432'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ CACHES = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
MIDDLEWARE_CLASSES += ("debug_toolbar.middleware.DebugToolbarMiddleware",)
|
MIDDLEWARE += ("debug_toolbar.middleware.DebugToolbarMiddleware",)
|
||||||
|
|
||||||
INSTALLED_APPS += (
|
INSTALLED_APPS += (
|
||||||
'django_extensions',
|
'django_extensions',
|
||||||
|
|
15
entrypoint.sh
Normal file
15
entrypoint.sh
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Wait for the database to be available
|
||||||
|
while ! nc -z db 5432; do
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
# Apply database migrations
|
||||||
|
python manage.py migrate
|
||||||
|
|
||||||
|
# Collect static files
|
||||||
|
python manage.py collectstatic --no-input
|
||||||
|
|
||||||
|
# Start the server
|
||||||
|
python manage.py runserver 0.0.0.0:8000
|
|
@ -1,56 +1,57 @@
|
||||||
|
setuptools<58.0.0
|
||||||
Babel==2.3.4
|
Babel==2.3.4
|
||||||
Django==1.9.4
|
Django==1.11.18
|
||||||
Django-Select2==4.3.2
|
Django-Select2==4.3.2
|
||||||
Pillow==3.2.0
|
Pillow==9.5.0
|
||||||
URLObject==2.4.0
|
URLObject==2.4.0
|
||||||
Unidecode==0.04.19
|
Unidecode==1.0.23
|
||||||
YURL==0.13
|
YURL==0.13
|
||||||
aldryn-apphooks-config==0.2.7
|
#aldryn-apphooks-config==0.2.7
|
||||||
aldryn-boilerplates==0.7.4
|
#aldryn-boilerplates==0.7.4
|
||||||
aldryn-categories==1.0.3
|
aldryn-categories==1.2.0
|
||||||
aldryn-common==1.0.1
|
aldryn-common==1.0.5
|
||||||
aldryn-newsblog==1.2.1
|
aldryn-newsblog==2.2.1
|
||||||
aldryn-people==1.2.0
|
aldryn-people==2.2.0
|
||||||
aldryn-reversion==1.0.8
|
#aldryn-reversion==1.0.8
|
||||||
aldryn-search==0.2.11
|
aldryn-search==0.2.11
|
||||||
aldryn-translation-tools==0.2.1
|
aldryn-translation-tools==0.3.0
|
||||||
backport-collections==0.1
|
backport-collections==0.1
|
||||||
cmsplugin-filer==1.0.1
|
#cmsplugin-filer==1.1.3
|
||||||
django-appconf==1.0.2
|
django-appconf==1.0.2
|
||||||
django-appdata==0.1.5
|
django-appdata==0.2.1
|
||||||
django-bootstrap3==7.0.1
|
django-bootstrap3==7.0.1
|
||||||
django-classy-tags==0.7.2
|
django-classy-tags==0.7.2
|
||||||
django-cms==3.2.5
|
django-cms==3.6.0
|
||||||
django-compressor==2.0
|
django-compressor==2.0
|
||||||
django-debug-toolbar==1.4
|
django-debug-toolbar==1.4
|
||||||
python-dotenv==0.10.3
|
python-dotenv==0.10.3
|
||||||
django-extensions==1.6.7
|
django-extensions==1.6.7
|
||||||
django-filer==2.1.2
|
django-filer==1.5.0
|
||||||
django-filter==0.13.0
|
django-filter==0.13.0
|
||||||
django-formtools==1.0
|
django-formtools==2.1
|
||||||
django-guardian==1.4.4
|
django-guardian==1.4.4
|
||||||
django-haystack==2.4.1
|
django-haystack==2.4.1
|
||||||
django-meta==1.2
|
django-meta==1.2
|
||||||
django-meta-mixin==0.3.0
|
django-meta-mixin==0.3.0
|
||||||
django-model-utils==2.5
|
django-model-utils==2.5
|
||||||
django-mptt==0.8.4
|
django-mptt==0.11
|
||||||
django-parler==1.6.3
|
django-parler==1.9.2
|
||||||
django-phonenumber-field==1.1.0
|
django-phonenumber-field==1.1.0
|
||||||
django-polymorphic==0.9.2
|
django-polymorphic==2.0.2
|
||||||
django-reversion==1.10.2
|
django-reversion==1.10.2
|
||||||
django-sekizai==0.9.0
|
django-sekizai==0.9.0
|
||||||
django-sortedm2m==1.2.2
|
django-sortedm2m==3.1.1
|
||||||
django-spurl==0.6.4
|
django-spurl==0.6.4
|
||||||
django-standard-form==1.1.1
|
django-standard-form==1.1.1
|
||||||
django-stored-messages==1.4.0
|
django-stored-messages==1.4.0
|
||||||
django-taggit==0.18.3
|
django-taggit==0.23.0
|
||||||
django-taggit-autosuggest==0.2.8
|
django-taggit-autosuggest==0.2.8
|
||||||
django-taggit-templatetags==0.2.5
|
django-taggit-templatetags==0.2.5
|
||||||
django-templatetag-sugar==1.0
|
django-templatetag-sugar==1.0
|
||||||
django-treebeard==4.0.1
|
django-treebeard==4.3
|
||||||
djangocms-admin-style==1.1.1
|
djangocms-admin-style>=1.2
|
||||||
djangocms-apphook-setup==0.1.2
|
djangocms-apphook-setup==0.1.2
|
||||||
djangocms-blog==0.9.0
|
djangocms-blog==0.8.13
|
||||||
djangocms-file==1.0
|
djangocms-file==1.0
|
||||||
djangocms-flash==0.3.0
|
djangocms-flash==0.3.0
|
||||||
djangocms-googlemap==0.4.0
|
djangocms-googlemap==0.4.0
|
||||||
|
@ -59,26 +60,25 @@ djangocms-link==1.7.2
|
||||||
djangocms-page-meta==0.5.11
|
djangocms-page-meta==0.5.11
|
||||||
djangocms-picture==1.0.0
|
djangocms-picture==1.0.0
|
||||||
djangocms-teaser==0.2.0
|
djangocms-teaser==0.2.0
|
||||||
djangocms-text-ckeditor==2.9.3
|
djangocms-text-ckeditor==3.7.0
|
||||||
djangocms-video==1.0.0
|
djangocms-video==1.0.0
|
||||||
easy-thumbnails==2.3
|
easy-thumbnails==2.4.1
|
||||||
html5lib==0.9999999
|
html5lib==0.999999999
|
||||||
ldap3==2.6.1
|
ldap3==2.6.1
|
||||||
lxml==3.6.0
|
lxml
|
||||||
model-mommy==1.2.6
|
model-mommy==1.2.6
|
||||||
phonenumbers==7.4.0
|
phonenumbers==8.13.11
|
||||||
phonenumberslite==7.4.0
|
psycopg2==2.8.4
|
||||||
psycopg2==2.7.3.2
|
pycryptodome==3.8.0
|
||||||
pycryptodome==3.6.6
|
pylibmc==1.6.3
|
||||||
pylibmc==1.5.1
|
|
||||||
python-dateutil==2.5.3
|
python-dateutil==2.5.3
|
||||||
python-slugify==1.2.0
|
python-slugify==1.2.6
|
||||||
pytz==2016.4
|
pytz>=2023.3
|
||||||
rcssmin==1.0.6
|
rcssmin==1.0.6
|
||||||
requests==2.10.0
|
requests>=2.20
|
||||||
rjsmin==1.0.12
|
rjsmin==1.0.12
|
||||||
six==1.10.0
|
six==1.10.0
|
||||||
sqlparse==0.1.19
|
sqlparse==0.4.4
|
||||||
stripe==2.41.0
|
stripe==2.41.0
|
||||||
wheel==0.29.0
|
wheel==0.29.0
|
||||||
django-admin-honeypot==1.0.0
|
django-admin-honeypot==1.0.0
|
||||||
|
@ -87,16 +87,17 @@ git+https://github.com/ungleich/python-oca.git#egg=oca
|
||||||
djangorestframework==3.6.3
|
djangorestframework==3.6.3
|
||||||
flake8==3.3.0
|
flake8==3.3.0
|
||||||
python-memcached==1.58
|
python-memcached==1.58
|
||||||
celery==4.0.2
|
celery==4.4.7
|
||||||
redis==2.10.5
|
redis==2.10.5
|
||||||
django-celery-results==1.0.1
|
django-celery-results==1.0.2
|
||||||
kombu==4.1.0
|
kombu>=4.6.10
|
||||||
mccabe==0.6.1
|
mccabe==0.6.1
|
||||||
pycodestyle==2.3.1
|
pycodestyle==2.3.1
|
||||||
pyflakes==1.5.0
|
pyflakes==1.5.0
|
||||||
billiard==3.5.0.3
|
billiard==3.6.4.0
|
||||||
amqp==2.2.1
|
amqp>=2.6.0
|
||||||
vine==1.1.4
|
vine==1.3.0
|
||||||
cdist==5.0.1
|
cdist==5.0.1
|
||||||
git+https://github.com/ungleich/djangocms-multisite.git#egg=djangocms_multisite
|
git+https://github.com/ungleich/djangocms-multisite.git#egg=djangocms_multisite
|
||||||
pyotp
|
pyotp
|
||||||
|
importlib_metadata<5
|
||||||
|
|
|
@ -8,7 +8,7 @@ from celery.utils.log import get_task_logger
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.core.mail import EmailMessage
|
from django.core.mail import EmailMessage
|
||||||
|
|
||||||
from dynamicweb.celery import app
|
from dynamicweb.pr_celery import app
|
||||||
|
|
||||||
logger = get_task_logger(__name__)
|
logger = get_task_logger(__name__)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue