Add crude basis for docker
This commit is contained in:
parent
01db89727e
commit
2cffca4023
4 changed files with 98 additions and 12 deletions
12
Dockerfile
Normal file
12
Dockerfile
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
FROM python:3.8-alpine
|
||||||
|
|
||||||
|
RUN mkdir code
|
||||||
|
WORKDIR code
|
||||||
|
|
||||||
|
RUN apk add --no-cache gcc musl-dev linux-headers mariadb-dev
|
||||||
|
|
||||||
|
|
||||||
|
COPY requirements.txt requirements.txt
|
||||||
|
RUN pip install -r requirements.txt
|
||||||
|
|
||||||
|
COPY . .
|
|
@ -1,4 +1,5 @@
|
||||||
from __future__ import absolute_import, unicode_literals
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
@ -8,8 +9,8 @@ from celery import Celery
|
||||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'KeRS.settings')
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'KeRS.settings')
|
||||||
|
|
||||||
app = Celery('KeRS',
|
app = Celery('KeRS',
|
||||||
broker='redis://localhost:6379/0',
|
broker=settings.CELERY_BROKER,
|
||||||
backend='redis://localhost:6379/1'
|
backend=settings.CELERY_BACKEND
|
||||||
)
|
)
|
||||||
|
|
||||||
# Using a string here means the worker doesn't have to serialize
|
# Using a string here means the worker doesn't have to serialize
|
||||||
|
|
|
@ -12,6 +12,18 @@ https://docs.djangoproject.com/en/3.0/ref/settings/
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from django.core.exceptions import ImproperlyConfigured
|
||||||
|
|
||||||
|
|
||||||
|
def get_env_value(env_variable, default):
|
||||||
|
try:
|
||||||
|
return os.environ[env_variable]
|
||||||
|
except KeyError:
|
||||||
|
return default
|
||||||
|
# error_msg = 'Set the {} environment variable'.format(env_variable)
|
||||||
|
# raise ImproperlyConfigured(error_msg)
|
||||||
|
|
||||||
|
|
||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
|
|
||||||
|
@ -32,6 +44,7 @@ OWN_APPS = [
|
||||||
'events',
|
'events',
|
||||||
'users',
|
'users',
|
||||||
'oauth',
|
'oauth',
|
||||||
|
'core'
|
||||||
]
|
]
|
||||||
|
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
|
@ -81,11 +94,11 @@ WSGI_APPLICATION = 'KeRS.wsgi.application'
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
'ENGINE': 'django.db.backends.mysql',
|
'ENGINE': 'django.db.backends.mysql',
|
||||||
'NAME': 'kers',
|
'NAME': get_env_value('DATABASE_NAME', 'kers'),
|
||||||
'USER': 'kers',
|
'USER': get_env_value('DATABASE_USER', 'kers'),
|
||||||
'PASSWORD': 'kers',
|
'PASSWORD': get_env_value('DATABASE_PASSWORD', 'kers'),
|
||||||
'HOST': '127.0.0.1',
|
'HOST': get_env_value('DATABASE_HOST', '127.0.0.1'),
|
||||||
'PORT': '3306',
|
'PORT': get_env_value('DATABASE_PORT', '3306'),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,6 +141,10 @@ STATICFILES_DIRS = [
|
||||||
os.path.join(BASE_DIR, "static"),
|
os.path.join(BASE_DIR, "static"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Celery
|
||||||
|
|
||||||
|
CELERY_BROKER = get_env_value('CELERY_BROKER', 'redis://localhost:6379/0')
|
||||||
|
CELERY_BACKEND = get_env_value('CELERY_BACKEND', 'redis://localhost:6379/1')
|
||||||
# Custom stuff
|
# Custom stuff
|
||||||
|
|
||||||
SERVER_URL = 'http://localhost:8000'
|
SERVER_URL = 'http://localhost:8000'
|
||||||
|
|
56
docker-compose.yml
Normal file
56
docker-compose.yml
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "8000:8000"
|
||||||
|
environment:
|
||||||
|
DATABASE_HOST: 'db'
|
||||||
|
CELERY_BROKER: 'redis://redis:6379/0'
|
||||||
|
CELERY_BACKEND: 'redis://redis:6379/1'
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
command: >
|
||||||
|
sh -c "sleep 5 &&
|
||||||
|
python manage.py migrate &&
|
||||||
|
python manage.py runserver 0.0.0.0:8000"
|
||||||
|
celery-worker:
|
||||||
|
build: .
|
||||||
|
environment:
|
||||||
|
DATABASE_HOST: 'db'
|
||||||
|
CELERY_BROKER: 'redis://redis:6379/0'
|
||||||
|
CELERY_BACKEND: 'redis://redis:6379/1'
|
||||||
|
depends_on:
|
||||||
|
- web
|
||||||
|
- redis
|
||||||
|
command: >
|
||||||
|
sh -c "celery -A KeRS worker -l info"
|
||||||
|
celery-beat:
|
||||||
|
build: .
|
||||||
|
environment:
|
||||||
|
DATABASE_HOST: 'db'
|
||||||
|
CELERY_BROKER: 'redis://redis:6379/0'
|
||||||
|
CELERY_BACKEND: 'redis://redis:6379/1'
|
||||||
|
depends_on:
|
||||||
|
- web
|
||||||
|
- redis
|
||||||
|
command: >
|
||||||
|
sh -c "celery -A KeRS beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler"
|
||||||
|
redis:
|
||||||
|
image: redis
|
||||||
|
# Db stuff
|
||||||
|
db:
|
||||||
|
image: mysql
|
||||||
|
command: --default-authentication-plugin=mysql_native_password
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: example
|
||||||
|
MYSQL_DATABASE: kers
|
||||||
|
MYSQL_USER: kers
|
||||||
|
MYSQL_PASSWORD: kers
|
||||||
|
# DB visual panel
|
||||||
|
adminer:
|
||||||
|
image: adminer
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
ports:
|
||||||
|
- 8080:8080
|
Loading…
Reference in a new issue