...
If you're already familiar with Docker and/or would like to contribute to our Docker builds, you can find our build files at NYPL-Simplified/circulation-docker.
Info | ||
---|---|---|
| ||
These instructions can also be found on Github. https://github.com/NYPL-Simplified/Simplified/wiki/Deployment:-Quickstart-with-Docker#es |
Step-by-step guide
Prep Work
Set up Docker
Install Docker. Depending on your package manager, you could also install a slightly older version with:
sudo apt-get install docker-ce
orsudo yum install docker-ce
.Info Docker has step-by-step instructions to grab its most up-to-date version.
Create any dependent, temporary containers (optional) for integrations like Elasticsearch and Postgres. We don't recommend using containers in the long-term for holding or maintaining data. However, if you just want to get a sense of how your Circulation Manager will work, containers are a quick option. Instructions for integrating Elasticsearch and Postgres via Docker can be found below.
Get the Docker images for the Library Simplified Circulation Manager. Run:
$ sudo docker pull nypl/circ-deploy && sudo docker pull nypl/circ-scripts
Running Deploy Circulation Manager containers
To deploy an app filled with your library's books, you'll need to run a number of scripts. Read the environment variable details below before running this script; you will likely need to alter it to meet your needs.
Info title Example Docker Run Script $ sudo docker run -d --name circ-scripts \ -e TZ="US/Central" \ -e SIMPLIFIED_DB_TASK='init' \ -e SIMPLIFIED_PRODUCTION_DATABASE='postgres://[username]:[password]@[host]:[port]/[database_name]' \ nypl/circ-scripts
The example above runs this resulting container in detached mode (
Running Scripts-d
), linked to the (-e
)SIMPLIFIED_PRODUCTION_DATABASE
and calling it "circ-scripts". With the (-e
) optional argumentTZ
, you can pass a Debian-system timezone representing your local time zone, which will cause timed scripts to run according to your local time. If the database you've connected in your configuration has never been used before, use-e
to set the optional argumentSIMPLIFIED_DB_TASK
to'init'
. This will keep track of the state of the database you've created and create an alias on your Elasticsearch cluster, allowing database updates to be easily managed with scripts.Refresh Materialized Views
Once you've given your scripts some time to run (~30 minutes should be enough time to start having works move through the import process), you'll want to refresh your cached materialized views so they show up in your deployed app.
Troubleshooting```sh $ sudo docker exec circ-scripts /var/www/circulation/core/bin/run refresh_materialized_views ```
Troubleshoot / Check container logs
You'll want to check the logs of your container. For example:
#check
logs
of
the
database
task
and
running
supervisor
processes
$sudo
docker
logs
circ-scripts
#check
logs
of
cron
and
scripts
$sudo
docker
exec
circ-scripts
cat
/var/log/cron.log
|
less
$sudo
docker
exec
circ-scripts
ls
/var/log/simplified
$sudo
docker
exec
circ-scripts
cat
/var/log/simplified/overdrive_monitor_full
|
less
#The
log
directory
can
also
be
found
on
the
production
server.
#Its
location
can
be
found
using
this
command.
$sudo
docker
inspect
circ-scripts
\
--format='{{range$mount
:=
.Mounts}}{{if
eq
$mount.Destination
"/var/log"}}{{$mount.Source}}{{end}}{{end}}'
You can hop into a running container at any time with the command:$ sudo docker exec -it circ /bin/bash
Info title Docker Documentation Docker has fantastic documentation to get more familiar with its command line tools, like
docker exec
anddocker inspect
. We recommend you check them out.Refresh Materialized Views
Once you've given your scripts some time to run (~30 minutes should be enough time to start having works move through the import process), you'll want to refresh your cached materialized views so they show up in your deployed app.
```sh $ sudo docker exec circ-scripts /var/www/circulation/core/bin/run refresh_materialized_views ```
...
Environment variables
- SIMPLIFIED_CONFIGURATION_FILE
Optional The full path to configuration file in the container. Using the volume options-v
, e.g.YOUR_LOCAL_DIRECTORY_WITH_CONFIG_FILE:/etc/simplified
, it should look something like-e SIMPLIFIED_CONFIGURATION_FILE=/etc/simplified/YOUR_CONFIGURATION_FILENAME.json
.
Use this documentation to create the JSON file for your particular library's configuration. If you're unfamiliar with JSON, you can use this JSON Formatter & Validator to validate your configuration file. - SIMPLIFIED_DB_TASK
Required. Performs a task against the database at container runtime. Options are:- ignore : Does nothing. This is the default value.
- init : Initializes the app against a brand new database. If you are running a circulation manager for the first time every, use this value to set up an Elasticsearch alias and account for the database schema for future migrations.
- migrate : Migrates an existing database against a new release. Use this value when switching from one stable version to another.
- SIMPLIFIED_PRODUCTION_DATABASE
Required. The URL of the production PostgreSQL database for the application. - SIMPLIFIED_TEST_DATABASE
Optional in v2.x only. The URL of a PostgreSQL database for tests. This optional variable allows unit tests to be run in the container. - TZ
Optional. Scripts container only. The timezone of the library or libraries on this circulation manager, selected according to Debian-system timezone options. This value allows scripts to run at ideal times.
Related articles
Content by Label | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...