National Centre for Excellence for Language Pedagogy
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.
Assume that Docker is available
❯ docker-compose --version ═
docker-compose version 1.24.1, build 4667896b
Generate local ssh key
ssh-keygen -i rsa docker/ncelp_id_rsa
Set .env with Docker variables. Use .env.template as starting point
cp .env.template .env
Customise as required
Set config/application.yml
```
ncelp_host: http://localhost:3000
development:
application_database_adapter: postgresql
application_database_name: ncelp
application_database_host: postgresdb
application_database_username: ncelp
application_database_password: ncelp
fedora_base_path: /ncelp-development
fedora_url: http://fcrepo:8080/fcrepo/rest
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://solr:8983/solr/hyrax_production
rails secrets
3. Build docker images. Note this will take up to 1h depending on network and laptop speed.
❯ docker-compose build
❯ docker-compose images ═ ✹
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
4. Start your docker stack
❯ docker-compose up
…
lots of logs
…
❯ docker-compose ps ⏎ ═ ✹ ✚
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
5. How to modify application code
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```.
If you make changes Compose file to try out some different configurations, you need to rebuild. Run ```docker-compose up --build```.
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.
docker-compose run web bundle lock —update rack nokogiri
docker-compose build
6. Clean start
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:
docker-compose rm
docker volume prune
7. Avaiable web services
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
Access Fedora store http://127.0.0.1:8080/fcrepo
Access Solr admin interface http://127.0.0.1:8983/solr/#/
8. Direct acces to stored data
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.
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.