项目作者: digital-york

项目描述 :
National Centre for Excellence for Language Pedagogy
高级语言: Ruby
项目地址: git://github.com/digital-york/ncelp.git
创建时间: 2019-01-21T10:06:42Z
项目社区:https://github.com/digital-york/ncelp

开源协议:

下载


National Centre for Excellence for Language Pedagogy

About us

The National Centre for Excellence for Language Pedagogy (NCELP) is funded by the Department for Education (DfE) and co-managed by The University of York and The Cam Academy Trust.

We work in partnership with university researchers, teacher educators and expert practitioners, and with 18 Specialist Teachers in nine Leading Schools across the country acting as language hubs, to improve language curriculum design and pedagogy, leading to a higher take up and greater success at GCSE.

Our substantial package of support includes professional development tools, teaching resources, and workshops, and takes forward the recommendations made in the Teaching Schools Council’s Modern Foreign Languages Pedagogy Review led by headteacher and linguist Ian Bauckham, and ensures they are achievable and effective in schools.

Quick start

  1. Assume that Docker is available

    1. docker-compose --version
    2. docker-compose version 1.24.1, build 4667896b

    Generate local ssh key

    1. ssh-keygen -i rsa docker/ncelp_id_rsa
  2. Set .env with Docker variables. Use .env.template as starting point

    1. cp .env.template .env

    Customise as required

  3. Set config/application.yml
    ```
    ncelp_host: http://localhost:3000
    development:
    application_database_adapter: postgresql
    application_database_name: ncelp
    application_database_host: postgresdb

    application_database_host: 127.0.0.1

    application_database_username: ncelp
    application_database_password: ncelp

    derivatives_path: tmp/ncelp-derivatives

    fedora_base_path: /ncelp-development

    fedora_url: http://127.0.0.1:8080/fcrepo/rest

    fedora_url: http://fcrepo:8080/fcrepo/rest

    fits_path: /fits/${FITS_VERSION}/fits.sh

    fits_path: /fits/fits-1.0.5/fits.sh
    log_level: error
    redis_namespace: ncelp-public
    realtime_notifications: ‘false’
    redis_host: redis
    redis_port: ‘6379’

    solr_url: http://127.0.0.1:8983/solr/hyrax_production

    solr_url: http://solr:8983/solr/hyrax_production

    Generate and add secrets rails secrets

    secret_key_base:

  1. 3. Build docker images. Note this will take up to 1h depending on network and laptop speed.

❯ docker-compose build

Check if images exists

❯ docker-compose images ═ ✹

  1. Container Repository Tag Image Id Size

ncelp-mac_app_1 ncelp-mac_app latest ebe2e4e5e2db 3 GB
ncelp-mac_fcrepo_1 ualbertalib/docker-fcrepo4 4.7 15806dadb895 575 MB
ncelp-mac_postgresdb_1 postgres 11-alpine da01ecfbabe1 68.5 MB
ncelp-mac_redis_1 redis 5 de25a81a5a0b 93.7 MB
ncelp-mac_solr_1 solr 7-alpine 64cb096f9679 286 MB
ncelp-mac_web_1 ncelp-mac_web latest ebe2e4e5e2db 3 GB

  1. 4. Start your docker stack

❯ docker-compose up

lots of logs

Check status from an other terminal

❯ docker-compose ps ⏎ ═ ✹ ✚

  1. Name Command State Ports

ncelp-mac_app_1 irb Exit 0
ncelp-mac_fcrepo_1 catalina.sh run Up 0.0.0.0:8080->8080/tcp
ncelp-mac_postgresdb_1 docker-entrypoint.sh postgres Up (unhealthy) 0.0.0.0:5432->5432/tcp
ncelp-mac_redis_1 docker-entrypoint.sh redis … Up (healthy) 0.0.0.0:6379->6379/tcp
ncelp-mac_solr_1 solr-precreate hyrax_produ … Up (healthy) 0.0.0.0:8983->8983/tcp
ncelp-mac_web_1 /bin/docker-entrypoint-web.sh Up 0.0.0.0:3000->3000/tcp

  1. 5. How to modify application code
  2. The local source code is shared with Docker ${APP_DIR} volume. Refresh browser to see any changes to .erb files (Note, this is only while RAILS_ENV=development). Restart web service to reload all changes to .rb files ```docker-compose restart web```.
  3. If you make changes Compose file to try out some different configurations, you need to rebuild. Run ```docker-compose up --build```.
  4. If you need update rails patches or other gems. Change version in Genfile than run ```bundle lock --update``` to update Gemfile.lock. Follow with ```docker-compose build```. A full rebuild requires a re-run of ```docker-compose run web bundle install``` to sync changes in the ```Gemfile.lock``` to the host.

Example: Bump up rack and nokogiri gems

docker-compose run web bundle lock —update rack nokogiri
docker-compose build

  1. 6. Clean start
  2. Hyrax data are stored in various location. Occassionally Fedora, Solr and Hyrax DB are not synchronised. In this case a full refresh of stored data is required. Follow those commands:

remove images

docker-compose rm

prune all data volumes

docker volume prune

  1. 7. Avaiable web services
  2. NCELP app http://127.0.0.1:3000. Sign in as admin user with qazwsx:ncelp-admin@york.ac.uk at http://127.0.0.1:3000/users/sign_in
  3. Access Fedora store http://127.0.0.1:8080/fcrepo
  4. Access Solr admin interface http://127.0.0.1:8983/solr/#/
  5. 8. Direct acces to stored data
  6. If you need access to a data volume, one approach will be mounting a volume to ad hoc busybox container. For example, to remove a flag that indicates that application was installed during the first build _$APP_WORKDIR/shared/state/.initialized_, use this command

docker run —rm -i -v=ncelp-mac_state:/tmp/ncelp-mac_state busybox rm /tmp/ncelp-mac_state/.initialized
```
The container will be removed (—rm) after completing this opperation.

  1. Know issus

Solr data re not store at external volume. Remove Solr container to start fresh.

Upgrading hyrax application requires to rung DB migration, run docker-compose web run bundle exec rails db:migrate RAILS_ENV=development. The command will be executed on stoping web service with Control+C as web container starts rails server.

Hyrax app creates application PID at /var/run/hyrax/hyrax.pid. Occasionally, restarting docker will not clean the file. On this occassion web service fails to start. Simply stop docker and start it again. Ultimetly, this can be also solved by removing web container with volumes and rebuild it.

In order to use Pry for debuging, add Pry bindig and restart docker. Visit relevant application section. Application will stop, however, access to terminal is not allowed. Connect to web service with attach command `docker attach #Container ID and press enter to see Pry CMD prompt.