feat: add new target for docker-specific deployment of lms (#30168)
This commit is contained in:
17
Dockerfile
17
Dockerfile
@@ -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'
|
||||
|
||||
83
lms/envs/docker-production.py
Normal file
83
lms/envs/docker-production.py
Normal 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()
|
||||
Reference in New Issue
Block a user