Major setup dir changes

This commit is contained in:
Brett 2022-01-11 13:39:39 +01:00
parent 9607fb7bbc
commit 879e114de6
12 changed files with 73 additions and 307 deletions

View File

@ -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 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 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) Use a bind mount for the config file (ckan.ini)
mkdir local # docker run -p 0.0.0.0:5000:5000 --net ckan-docker_default --hostname ckan --name ckan \
docker cp ckan:/srv/app/ckan.ini ./local/ckan.ini --env-file=./environ --mount type=bind,source=$(pwd)/local/ckan.ini,target=/srv/app/ckan.ini \
docker cp ckan:/srv/app/src ./local/src --mount type=bind,source=$(pwd)/local/src,target=/srv/app/src \
stop/remove ckan container -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 Maybe include a script to replace docker-compose if required

252
ckan.ini
View File

@ -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/<NAME>
#package_new_return_url = http://another.frontend/dataset/<NAME>
#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

View File

@ -81,9 +81,11 @@ RUN addgroup -g 92 -S ckan && \
RUN mkdir -p $CKAN_STORAGE_PATH && \ RUN mkdir -p $CKAN_STORAGE_PATH && \
chown -R ckan:ckan $CKAN_STORAGE_PATH chown -R ckan:ckan $CKAN_STORAGE_PATH
COPY 2.7/setup ${APP_DIR} COPY 2.7/setup/ckan-uwsgi.ini ${APP_DIR}
COPY 2.7/setup/supervisor.worker.conf /etc/supervisord.d/worker.conf COPY 2.7/setup/wsgi.py ${APP_DIR}
COPY 2.7/setup/uwsgi.conf /srv/app/uwsgi.conf 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 # Create entrypoint directory for children image scripts
ONBUILD RUN mkdir /docker-entrypoint.d ONBUILD RUN mkdir /docker-entrypoint.d

View File

@ -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

View File

@ -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"

View File

@ -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)

View File

@ -79,9 +79,11 @@ RUN addgroup -g 92 -S ckan && \
RUN mkdir -p $CKAN_STORAGE_PATH && \ RUN mkdir -p $CKAN_STORAGE_PATH && \
chown -R ckan:ckan $CKAN_STORAGE_PATH chown -R ckan:ckan $CKAN_STORAGE_PATH
COPY 2.8/setup ${APP_DIR} COPY 2.8/setup/ckan-uwsgi.ini ${APP_DIR}
COPY 2.8/setup/supervisor.worker.conf /etc/supervisord.d/worker.conf COPY 2.8/setup/wsgi.py ${APP_DIR}
COPY 2.8/setup/uwsgi.conf /srv/app/uwsgi.conf 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 # Create entrypoint directory for children image scripts
ONBUILD RUN mkdir /docker-entrypoint.d ONBUILD RUN mkdir /docker-entrypoint.d

View File

@ -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

View File

@ -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"

View File

@ -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)

View File

@ -63,7 +63,7 @@ RUN cd ${APP_DIR} && \
# Virtual environment binaries/scripts to be used first # Virtual environment binaries/scripts to be used first
ENV PATH=${APP_DIR}/bin:${PATH} 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 && \ RUN pip3 install -e git+${GIT_URL}@${GIT_BRANCH}#egg=ckan && \
pip3 install uwsgi && \ pip3 install uwsgi && \
cd ${SRC_DIR}/ckan && \ cd ${SRC_DIR}/ckan && \
@ -80,8 +80,10 @@ RUN pip3 install supervisor && \
mkdir /etc/supervisord.d mkdir /etc/supervisord.d
# Copy all setup files # Copy all setup files
COPY 2.9/setup ${APP_DIR} COPY 2.9/setup/ckan-uwsgi.ini ${APP_DIR}
COPY 2.9/setup/supervisor.worker.conf /etc/supervisord.d/worker.conf 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 COPY 2.9/setup/supervisord.conf /etc/supervisord.conf
# Create a local user and group to run the app # Create a local user and group to run the app

View File

@ -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"