feat: add new target for docker-specific deployment of lms (#30168)

This commit is contained in:
Chris Pappas
2022-04-04 08:53:26 -04:00
committed by GitHub
parent 38bad82cea
commit e008357030
2 changed files with 100 additions and 0 deletions

View File

@@ -149,6 +149,22 @@ CMD gunicorn \
--access-logfile \
- cms.wsgi:application
##################################################
# Define LMS docker-based non-dev target.
FROM base as lms-docker
ENV SERVICE_VARIANT lms
ENV LMS_CFG="/vault-api-secrets/secrets/edx-platform.yml"
ENV EDX_PLATFORM_SETTINGS='docker-production'
ENV DJANGO_SETTINGS_MODULE="lms.envs.$EDX_PLATFORM_SETTINGS"
EXPOSE 8000
CMD gunicorn \
-c /edx/app/edxapp/edx-platform/lms/docker_lms_gunicorn.py \
--name lms \
--bind=0.0.0.0:8000 \
--max-requests=1000 \
--access-logfile \
- lms.wsgi:application
##################################################
# Define intermediate dev target for LMS/CMS.
@@ -160,6 +176,7 @@ CMD gunicorn \
# in a single layer, shared between `lms-dev` and `cms-dev`.
FROM base as dev
RUN pip install -r requirements/edx/development.txt
ENV LMS_CFG="$CONFIG_ROOT/lms.yml"
# Link configuration YAMLs and set EDX_PLATFORM_SE1TTINGS.
ENV EDX_PLATFORM_SETTINGS='devstack_docker'

View File

@@ -0,0 +1,83 @@
"""
Specific overrides to the base prod settings for a docker production deployment.
"""
import platform
from .production import * # pylint: disable=wildcard-import, unused-wildcard-import
def get_docker_logger_config(log_dir='/var/tmp',
logging_env="no_env",
edx_filename="edx.log",
dev_env=False,
debug=False,
service_variant='lms'):
"""
Return the appropriate logging config dictionary. You should assign the
result of this to the LOGGING var in your settings.
"""
hostname = platform.node().split(".")[0]
syslog_format = (
"[service_variant={service_variant}]"
"[%(name)s][env:{logging_env}] %(levelname)s "
"[{hostname} %(process)d] [%(filename)s:%(lineno)d] "
"- %(message)s"
).format(
service_variant=service_variant,
logging_env=logging_env, hostname=hostname
)
handlers = ['console']
logger_config = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': '%(asctime)s %(levelname)s %(process)d '
'[%(name)s] %(filename)s:%(lineno)d - %(message)s',
},
'syslog_format': {'format': syslog_format},
'raw': {'format': '%(message)s'},
},
'handlers': {
'console': {
'level': 'DEBUG' if debug else 'INFO',
'class': 'logging.StreamHandler',
'formatter': 'standard',
'stream': sys.stdout,
},
},
'loggers': {
'django': {
'handlers': handlers,
'propagate': True,
'level': 'INFO'
},
'requests': {
'handlers': handlers,
'propagate': True,
'level': 'WARNING'
},
'factory': {
'handlers': handlers,
'propagate': True,
'level': 'WARNING'
},
'django.request': {
'handlers': handlers,
'propagate': True,
'level': 'WARNING'
},
'': {
'handlers': handlers,
'level': 'DEBUG',
'propagate': False
},
}
}
return logger_config
LOGGING = get_docker_logger_config()