Installation with Docker

Docker is used to provide a consistent environment. Additional Python scripts are used for automisation of the installation process. This solution also contains the EOASkripts suite, which effectively makes this an all-in-one-solution for the whole production infrastructure.

Dependencies to other git repositories are handled using git_deps_py.

Configuration

  • Environment variables: see file .env

    These variables are available inside the docker-compose.yaml file and are also loaded into the Python scripts. (The .env file is initially created with default settings by the init.py script)

  • Django settings: see src/eoa/settings.py

    For further information please check the Django documentation.

Prerequisites

Initialise the Repository

Initialise the repository with the following commands:

$ git_deps_py
$ ./scripts/init.py --build

This will pull remote repositories and resources, initialize the database, etc. The --build parameter forces the recreation of the docker image, e.g. if Dockerfile or requirements.txt have changed.

Import data

Initialize CMS pages

The dummy fixture contains the default setup for CMS pages. Also a CMS superuser with username test and password test (don’t use this in production !):

$ cp fixtures/cms_dummy.json res/fixtures/
$ ./scripts/init.py --skip-db
$ ./scripts/run.py && ./scripts/exec_in_container.py
$ $ python manage.py loaddata $RES_DIR/fixtures/cms_dummy.json
$ $ exit
$ ./scripts/stop.py

Import Publications

In order to publish a publication on the platform, the following steps are necessary:

  1. Using the conversion workflow (EOASkripts), produce a Django-XML version of a publication.

  2. Import it into the EOA Publication Platform

For the example publication, this process goes as follows:

  1. Compile the example

Compile the example file found in eoa-publication-model. For other examples containing TEI-XML consult https://github.molgen.mpg.de/EditionOpenAccess/EOASkripts#the-tei-workflow-tei—pdf-django-epub:

$ cd example_import
$ git_deps_py --store-dir ../dependencies
$ cd dependencies/EOASkripts
$ ./scripts/run.py && ./scripts/exec_in_container.py
$ $ process_eoa_latex.py input/example/124_eoatex
$ $ exit
$ ./scripts/stop.py
$ cd ../../../
  1. Import example into the platform

After the creation of Django-XML, import it into the platform:

$ mkdir res/publications
$ cp -r example_import/EOASkripts/runtime/output/124_eoatex/django res/publications/example
$ ./scripts/init.py --skip-db
$ ./scripts/run.py && ./scripts/exec_in_container.py
$ $ python manage.py publicationimport $RES_DIR/publications/example
$ $ exit

Visit http://localhost:8001/ for the main site and http://localhost:8001/studies/124/index.html for the example publication. Go to http://localhost:8001/admin/login/ to access the Django administration pages, using above credentials.

Stop the container with:

$ ./scripts/stop.py

Configure Project specific Information

In order to tweak the CMS pages, log in to the CMS and edit them.

To change the organisation information (name, logo, …), edit the files in res/custom_config/* and then perform

$ ./scripts/init.py --skip-db

To add a logo and a favicon, copy the files into res/static/custom_static/. Files in this directory overwrite default files with the same name:

$ cp <my_icon> res/static/custom_static/
$ ./scripts/init.py --skip-db

Note

The templates expect some pages to exist in the CMS:

  • Introduction Page (id: introduction)

  • Contact (id: contact)

  • Imprint (id: imprint)

Deleting those might break things.

Useful commands

Run the Webserver:

$ ./scripts/run.py

The webpage can now be explored in your local browser.

Stop the Webserver:

$ ./scripts/stop.py

Run Command in the Webserver container:

$ ./scripts/exec_in_container.py '[ CMD ...]'

Clean the Repository:

$ ./scripts/exit.py

This should remove all remote repositories and resources not part of this repository. Docker images are not deleted though.

Export Data

In order to export CMS content, run:

$ ./scripts/run.py && ./scripts/exec_in_container.py 'python manage.py dump_cms'
$ cp runtime_data/fixtures/* fixtures/