From 879e114de6f8132169172c762a710ceb69b9f777 Mon Sep 17 00:00:00 2001 From: Brett Date: Tue, 11 Jan 2022 13:39:39 +0100 Subject: [PATCH] Major setup dir changes --- README.txt | 18 +- ckan.ini | 252 ------------------ images/ckan-base/2.7/Dockerfile | 8 +- images/ckan-base/2.7/setup/ckan-uwsgi.ini | 15 ++ .../2.7/setup/supervisor.worker.conf | 13 - images/ckan-base/2.7/setup/wsgi.py | 9 + images/ckan-base/2.8/Dockerfile | 8 +- images/ckan-base/2.8/setup/ckan-uwsgi.ini | 15 ++ .../2.8/setup/supervisor.worker.conf | 13 - images/ckan-base/2.8/setup/wsgi.py | 9 + images/ckan-base/2.9/Dockerfile | 8 +- .../2.9/setup/supervisor.worker.conf | 12 - 12 files changed, 73 insertions(+), 307 deletions(-) delete mode 100644 ckan.ini create mode 100644 images/ckan-base/2.7/setup/ckan-uwsgi.ini delete mode 100755 images/ckan-base/2.7/setup/supervisor.worker.conf create mode 100644 images/ckan-base/2.7/setup/wsgi.py create mode 100644 images/ckan-base/2.8/setup/ckan-uwsgi.ini delete mode 100755 images/ckan-base/2.8/setup/supervisor.worker.conf create mode 100644 images/ckan-base/2.8/setup/wsgi.py delete mode 100644 images/ckan-base/2.9/setup/supervisor.worker.conf diff --git a/README.txt b/README.txt index c0b737d..a769c0e 100644 --- a/README.txt +++ b/README.txt @@ -16,14 +16,16 @@ out of the build and hence will not show with an "inspect image" command Do we pre-build a CKAN image and use that (and extend) as the base image OR just build it from scratch and while saving to storage what we need to +# docker-compose up -d --build +# mkdir local +# docker cp ckan:/srv/app/ckan.ini ./local/ckan.ini +# docker cp ckan:/srv/app/src ./local/src +Stop/Remove ckan container +Start ckan container as follows Use a bind mount for the config file (ckan.ini) - mkdir local - docker cp ckan:/srv/app/ckan.ini ./local/ckan.ini - docker cp ckan:/srv/app/src ./local/src - stop/remove ckan container - docker run -p 0.0.0.0:5000:5000 --net ckan-docker_default --hostname ckan --name ckan \ - --env-file=./environ --mount type=bind,source=$(pwd)/local/ckan.ini,target=/srv/app/ckan.ini \ - --mount type=bind,source=$(pwd)/local/src,target=/srv/app/src \ - -d ckan-docker_ckan +# docker run -p 0.0.0.0:5000:5000 --net ckan-docker_default --hostname ckan --name ckan \ + --env-file=./environ --mount type=bind,source=$(pwd)/local/ckan.ini,target=/srv/app/ckan.ini \ + --mount type=bind,source=$(pwd)/local/src,target=/srv/app/src \ + -d ckan-docker_ckan Maybe include a script to replace docker-compose if required diff --git a/ckan.ini b/ckan.ini deleted file mode 100644 index 61e85d2..0000000 --- a/ckan.ini +++ /dev/null @@ -1,252 +0,0 @@ -# -# CKAN - Pylons configuration -# -# These are some of the configuration options available for your CKAN -# instance. Check the documentation in 'doc/configuration.rst' or at the -# following URL for a description of what they do and the full list of -# available options: -# -# http://docs.ckan.org/en/latest/maintaining/configuration.html -# -# The %(here)s variable will be replaced with the parent directory of this file -# - -[DEFAULT] - -# WARNING: *THIS SETTING MUST BE SET TO FALSE ON A PUBLIC ENVIRONMENT* -# With debug mode enabled, a visitor to your site could execute malicious commands. -debug = false - -[app:main] -use = egg:ckan - -## Development settings -ckan.devserver.host = localhost -ckan.devserver.port = 5000 - - -## Session settings -cache_dir = /tmp/%(ckan.site_id)s/ -beaker.session.key = ckan - -# This is the secret token that the beaker library uses to hash the cookie sent -# to the client. `ckan generate config` generates a unique value for this each -# time it generates a config file. -beaker.session.secret = EHU6ef6rWzspiSQutl2F4G28n - -# `ckan generate config` generates a unique value for this each time it generates -# a config file. -app_instance_uuid = 52ba6253-cf07-4f0b-ba3f-1c685b4a708c - -# repoze.who config -who.config_file = %(here)s/who.ini -who.log_level = warning -who.log_file = %(cache_dir)s/who_log.ini -# Session timeout (user logged out after period of inactivity, in seconds). -# Inactive by default, so the session doesn't expire. -# who.timeout = 86400 - -## Database Settings -sqlalchemy.url = postgresql://ckan_default:ManHat212@localhost/ckan_default - -#ckan.datastore.write_url = postgresql://ckan_default:pass@localhost/datastore_default -#ckan.datastore.read_url = postgresql://datastore_default:pass@localhost/datastore_default - -# PostgreSQL' full-text search parameters -ckan.datastore.default_fts_lang = english -ckan.datastore.default_fts_index_method = gist - - -## Site Settings - -ckan.site_url = -#ckan.use_pylons_response_cleanup_middleware = true - -## Authorization Settings - -ckan.auth.anon_create_dataset = false -ckan.auth.create_unowned_dataset = false -ckan.auth.create_dataset_if_not_in_organization = false -ckan.auth.user_create_groups = false -ckan.auth.user_create_organizations = false -ckan.auth.user_delete_groups = true -ckan.auth.user_delete_organizations = true -ckan.auth.create_user_via_api = false -ckan.auth.create_user_via_web = true -ckan.auth.roles_that_cascade_to_sub_groups = admin -ckan.auth.public_user_details = true -ckan.auth.public_activity_stream_detail = true -ckan.auth.allow_dataset_collaborators = false -ckan.auth.create_default_api_keys = false - -## API Token Settings -api_token.nbytes = 60 -api_token.jwt.encode.secret = string:EHU6ef6rWzspiSQutl2F4G28n -api_token.jwt.decode.secret = string:EHU6ef6rWzspiSQutl2F4G28n -api_token.jwt.algorithm = HS256 - -## API Token: expire_api_token plugin -expire_api_token.default_lifetime = 3600 - -## Search Settings - -ckan.site_id = default -#solr_url = http://127.0.0.1:8983/solr - - -## Redis Settings - -# URL to your Redis instance, including the database to be used. -#ckan.redis.url = redis://localhost:6379/0 - - -## CORS Settings - -# If cors.origin_allow_all is true, all origins are allowed. -# If false, the cors.origin_whitelist is used. -# ckan.cors.origin_allow_all = true -# cors.origin_whitelist is a space separated list of allowed domains. -# ckan.cors.origin_whitelist = http://example1.com http://example2.com - - -## Plugins Settings - -# Note: Add ``datastore`` to enable the CKAN DataStore -# Add ``datapusher`` to enable DataPusher -# Add ``resource_proxy`` to enable resorce proxying and get around the -# same origin policy -ckan.plugins = image_view text_view recline_view datastore datapusher envvars - -# Define which views should be created by default -# (plugins must be loaded in ckan.plugins) -ckan.views.default_views = image_view text_view recline_view - -# Customize which text formats the text_view plugin will show -#ckan.preview.json_formats = json -#ckan.preview.xml_formats = xml rdf rdf+xml owl+xml atom rss -#ckan.preview.text_formats = text plain text/plain - -# Customize which image formats the image_view plugin will show -#ckan.preview.image_formats = png jpeg jpg gif - -## Front-End Settings - -ckan.site_title = CKAN -ckan.site_logo = /base/images/ckan-logo.png -ckan.site_description = -ckan.favicon = /base/images/ckan.ico -ckan.gravatar_default = identicon -ckan.preview.direct = png jpg gif -ckan.preview.loadable = html htm rdf+xml owl+xml xml n3 n-triples turtle plain atom csv tsv rss txt json -ckan.display_timezone = server - -# package_hide_extras = for_search_index_only -#package_edit_return_url = http://another.frontend/dataset/ -#package_new_return_url = http://another.frontend/dataset/ -#ckan.recaptcha.publickey = -#ckan.recaptcha.privatekey = -#licenses_group_url = http://licenses.opendefinition.org/licenses/groups/ckan.json -# ckan.template_footer_end = - - -## Internationalisation Settings -ckan.locale_default = en -ckan.locale_order = en pt_BR ja it cs_CZ ca es fr el sv sr sr@latin no sk fi ru de pl nl bg ko_KR hu sa sl lv -ckan.locales_offered = -ckan.locales_filtered_out = en_GB - -## Feeds Settings - -ckan.feeds.authority_name = -ckan.feeds.date = -ckan.feeds.author_name = -ckan.feeds.author_link = - -## Storage Settings - -#ckan.storage_path = /var/lib/ckan -#ckan.max_resource_size = 10 -#ckan.max_image_size = 2 - -## Webassets Settings -#ckan.webassets.use_x_sendfile = false -#ckan.webassets.path = /var/lib/ckan/webassets - - -## Datapusher settings - -# Make sure you have set up the DataStore - -#ckan.datapusher.formats = csv xls xlsx tsv application/csv application/vnd.ms-excel application/vnd.openxmlformats-officedocument.spreadsheetml.sheet -#ckan.datapusher.url = http://127.0.0.1:8800/ -#ckan.datapusher.assume_task_stale_after = 3600 - -# Resource Proxy settings -# Preview size limit, default: 1MB -#ckan.resource_proxy.max_file_size = 1048576 -# Size of chunks to read/write. -#ckan.resource_proxy.chunk_size = 4096 - -## Activity Streams Settings - -#ckan.activity_streams_enabled = true -#ckan.activity_list_limit = 31 -#ckan.activity_streams_email_notifications = true -#ckan.email_notifications_since = 2 days -ckan.hide_activity_from_users = %(ckan.site_id)s - - -## Email settings - -#email_to = errors@example.com -#error_email_from = ckan-errors@example.com -#smtp.server = localhost -#smtp.starttls = False -#smtp.user = username@example.com -#smtp.password = your_password -#smtp.mail_from = -#smtp.reply_to = - -## Background Job Settings -ckan.jobs.timeout = 180 - -## Logging configuration -[loggers] -keys = root, ckan, ckanext, werkzeug - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARNING -handlers = console - -[logger_werkzeug] -level = WARNING -handlers = console -qualname = werkzeug -propagate = 0 - -[logger_ckan] -level = INFO -handlers = console -qualname = ckan -propagate = 0 - -[logger_ckanext] -level = DEBUG -handlers = console -qualname = ckanext -propagate = 0 - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(asctime)s %(levelname)-5.5s [%(name)s] %(message)s diff --git a/images/ckan-base/2.7/Dockerfile b/images/ckan-base/2.7/Dockerfile index 13e079a..83b33c9 100755 --- a/images/ckan-base/2.7/Dockerfile +++ b/images/ckan-base/2.7/Dockerfile @@ -81,9 +81,11 @@ RUN addgroup -g 92 -S ckan && \ RUN mkdir -p $CKAN_STORAGE_PATH && \ chown -R ckan:ckan $CKAN_STORAGE_PATH -COPY 2.7/setup ${APP_DIR} -COPY 2.7/setup/supervisor.worker.conf /etc/supervisord.d/worker.conf -COPY 2.7/setup/uwsgi.conf /srv/app/uwsgi.conf +COPY 2.7/setup/ckan-uwsgi.ini ${APP_DIR} +COPY 2.7/setup/wsgi.py ${APP_DIR} +COPY 2.7/setup/prerun.py ${APP_DIR} +COPY 2.7/setup/start_ckan.sh ${APP_DIR} +COPY 2.7/setup/supervisord.conf /etc/supervisord.conf # Create entrypoint directory for children image scripts ONBUILD RUN mkdir /docker-entrypoint.d diff --git a/images/ckan-base/2.7/setup/ckan-uwsgi.ini b/images/ckan-base/2.7/setup/ckan-uwsgi.ini new file mode 100644 index 0000000..2361f36 --- /dev/null +++ b/images/ckan-base/2.7/setup/ckan-uwsgi.ini @@ -0,0 +1,15 @@ +[uwsgi] +http-socket = :5000 +uid = ckan +guid = ckan +plugins = python3 +wsgi-file = /srv/app/wsgi.py +virtualenv = /srv/app +module = wsgi:application +master = true +processes = 5 +pidfile = /tmp/%n.pid +harakiri = 50 +max-requests = 5000 +vacuum = true +callable = application diff --git a/images/ckan-base/2.7/setup/supervisor.worker.conf b/images/ckan-base/2.7/setup/supervisor.worker.conf deleted file mode 100755 index 0ca43ba..0000000 --- a/images/ckan-base/2.7/setup/supervisor.worker.conf +++ /dev/null @@ -1,13 +0,0 @@ -[program:ckan-worker] -command=paster --plugin=ckan jobs worker -c /srv/app/production.ini -priority=501 -autostart=true -autorestart=true -redirect_stderr=true -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stdout -stderr_logfile_maxbytes=0 -user=ckan -environment=HOME="/srv/app",USER="ckan" - diff --git a/images/ckan-base/2.7/setup/wsgi.py b/images/ckan-base/2.7/setup/wsgi.py new file mode 100644 index 0000000..b37d80e --- /dev/null +++ b/images/ckan-base/2.7/setup/wsgi.py @@ -0,0 +1,9 @@ +import os +from ckan.config.middleware import make_app +from ckan.cli import CKANConfigLoader +from logging.config import fileConfig as loggingFileConfig +config_filepath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'ckan.ini') +abspath = os.path.join(os.path.dirname(os.path.abspath(__file__))) +loggingFileConfig(config_filepath) +config = CKANConfigLoader(config_filepath).get_config() +application = make_app(config) diff --git a/images/ckan-base/2.8/Dockerfile b/images/ckan-base/2.8/Dockerfile index e045408..e2cec51 100755 --- a/images/ckan-base/2.8/Dockerfile +++ b/images/ckan-base/2.8/Dockerfile @@ -79,9 +79,11 @@ RUN addgroup -g 92 -S ckan && \ RUN mkdir -p $CKAN_STORAGE_PATH && \ chown -R ckan:ckan $CKAN_STORAGE_PATH -COPY 2.8/setup ${APP_DIR} -COPY 2.8/setup/supervisor.worker.conf /etc/supervisord.d/worker.conf -COPY 2.8/setup/uwsgi.conf /srv/app/uwsgi.conf +COPY 2.8/setup/ckan-uwsgi.ini ${APP_DIR} +COPY 2.8/setup/wsgi.py ${APP_DIR} +COPY 2.8/setup/prerun.py ${APP_DIR} +COPY 2.8/setup/start_ckan.sh ${APP_DIR} +COPY 2.8/setup/supervisord.conf /etc/supervisord.conf # Create entrypoint directory for children image scripts ONBUILD RUN mkdir /docker-entrypoint.d diff --git a/images/ckan-base/2.8/setup/ckan-uwsgi.ini b/images/ckan-base/2.8/setup/ckan-uwsgi.ini new file mode 100644 index 0000000..2361f36 --- /dev/null +++ b/images/ckan-base/2.8/setup/ckan-uwsgi.ini @@ -0,0 +1,15 @@ +[uwsgi] +http-socket = :5000 +uid = ckan +guid = ckan +plugins = python3 +wsgi-file = /srv/app/wsgi.py +virtualenv = /srv/app +module = wsgi:application +master = true +processes = 5 +pidfile = /tmp/%n.pid +harakiri = 50 +max-requests = 5000 +vacuum = true +callable = application diff --git a/images/ckan-base/2.8/setup/supervisor.worker.conf b/images/ckan-base/2.8/setup/supervisor.worker.conf deleted file mode 100755 index 0ca43ba..0000000 --- a/images/ckan-base/2.8/setup/supervisor.worker.conf +++ /dev/null @@ -1,13 +0,0 @@ -[program:ckan-worker] -command=paster --plugin=ckan jobs worker -c /srv/app/production.ini -priority=501 -autostart=true -autorestart=true -redirect_stderr=true -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stdout -stderr_logfile_maxbytes=0 -user=ckan -environment=HOME="/srv/app",USER="ckan" - diff --git a/images/ckan-base/2.8/setup/wsgi.py b/images/ckan-base/2.8/setup/wsgi.py new file mode 100644 index 0000000..b37d80e --- /dev/null +++ b/images/ckan-base/2.8/setup/wsgi.py @@ -0,0 +1,9 @@ +import os +from ckan.config.middleware import make_app +from ckan.cli import CKANConfigLoader +from logging.config import fileConfig as loggingFileConfig +config_filepath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'ckan.ini') +abspath = os.path.join(os.path.dirname(os.path.abspath(__file__))) +loggingFileConfig(config_filepath) +config = CKANConfigLoader(config_filepath).get_config() +application = make_app(config) diff --git a/images/ckan-base/2.9/Dockerfile b/images/ckan-base/2.9/Dockerfile index 4cda64c..a0d28d4 100755 --- a/images/ckan-base/2.9/Dockerfile +++ b/images/ckan-base/2.9/Dockerfile @@ -63,7 +63,7 @@ RUN cd ${APP_DIR} && \ # Virtual environment binaries/scripts to be used first ENV PATH=${APP_DIR}/bin:${PATH} -# Install CKAN and uwsgi +# Install CKAN, uwsgi, ckanext-envvars and generate CKAN config file RUN pip3 install -e git+${GIT_URL}@${GIT_BRANCH}#egg=ckan && \ pip3 install uwsgi && \ cd ${SRC_DIR}/ckan && \ @@ -80,8 +80,10 @@ RUN pip3 install supervisor && \ mkdir /etc/supervisord.d # Copy all setup files -COPY 2.9/setup ${APP_DIR} -COPY 2.9/setup/supervisor.worker.conf /etc/supervisord.d/worker.conf +COPY 2.9/setup/ckan-uwsgi.ini ${APP_DIR} +COPY 2.9/setup/wsgi.py ${APP_DIR} +COPY 2.9/setup/prerun.py ${APP_DIR} +COPY 2.9/setup/start_ckan.sh ${APP_DIR} COPY 2.9/setup/supervisord.conf /etc/supervisord.conf # Create a local user and group to run the app diff --git a/images/ckan-base/2.9/setup/supervisor.worker.conf b/images/ckan-base/2.9/setup/supervisor.worker.conf deleted file mode 100644 index 9d46f37..0000000 --- a/images/ckan-base/2.9/setup/supervisor.worker.conf +++ /dev/null @@ -1,12 +0,0 @@ -[program:ckan-worker] -command=ckan -c /srv/app/ckan.ini jobs worker -priority=501 -autostart=true -autorestart=true -redirect_stderr=true -stdout_logfile=/dev/stdout -stdout_logfile_maxbytes=0 -stderr_logfile=/dev/stdout -stderr_logfile_maxbytes=0 -user=ckan -environment=HOME="/srv/app",USER="ckan" \ No newline at end of file