valkyrie 2.0.0 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +60 -56
  3. data/.lando.yml +40 -0
  4. data/.rubocop.yml +4 -1
  5. data/.tool-versions +1 -1
  6. data/Appraisals +4 -4
  7. data/CHANGELOG.md +136 -0
  8. data/README.md +21 -49
  9. data/Rakefile +21 -20
  10. data/db/config.yml +3 -10
  11. data/db/schema.rb +0 -40
  12. data/gemfiles/activerecord_5_2.gemfile +2 -0
  13. data/gemfiles/{activerecord_5_1.gemfile → activerecord_6_0.gemfile} +3 -1
  14. data/lib/generators/valkyrie/resource_generator.rb +3 -3
  15. data/lib/valkyrie.rb +33 -15
  16. data/lib/valkyrie/change_set.rb +3 -3
  17. data/lib/valkyrie/id.rb +26 -3
  18. data/lib/valkyrie/indexers/access_controls_indexer.rb +17 -17
  19. data/lib/valkyrie/logging.rb +72 -0
  20. data/lib/valkyrie/persistence/composite_persister.rb +1 -1
  21. data/lib/valkyrie/persistence/fedora.rb +2 -0
  22. data/lib/valkyrie/persistence/fedora/list_node.rb +46 -49
  23. data/lib/valkyrie/persistence/fedora/metadata_adapter.rb +2 -2
  24. data/lib/valkyrie/persistence/fedora/ordered_list.rb +90 -90
  25. data/lib/valkyrie/persistence/fedora/ordered_reader.rb +5 -5
  26. data/lib/valkyrie/persistence/fedora/permissive_schema.rb +3 -3
  27. data/lib/valkyrie/persistence/fedora/persister.rb +82 -83
  28. data/lib/valkyrie/persistence/fedora/persister/model_converter.rb +16 -17
  29. data/lib/valkyrie/persistence/fedora/persister/orm_converter.rb +38 -18
  30. data/lib/valkyrie/persistence/fedora/query_service.rb +54 -53
  31. data/lib/valkyrie/persistence/memory/persister.rb +33 -33
  32. data/lib/valkyrie/persistence/memory/query_service.rb +52 -34
  33. data/lib/valkyrie/persistence/postgres/orm_converter.rb +52 -52
  34. data/lib/valkyrie/persistence/postgres/query_service.rb +86 -33
  35. data/lib/valkyrie/persistence/postgres/resource_converter.rb +1 -1
  36. data/lib/valkyrie/persistence/shared/json_value_mapper.rb +4 -2
  37. data/lib/valkyrie/persistence/solr/model_converter.rb +337 -337
  38. data/lib/valkyrie/persistence/solr/orm_converter.rb +3 -3
  39. data/lib/valkyrie/persistence/solr/persister.rb +4 -17
  40. data/lib/valkyrie/persistence/solr/queries/find_all_query.rb +6 -0
  41. data/lib/valkyrie/persistence/solr/queries/find_members_query.rb +1 -1
  42. data/lib/valkyrie/persistence/solr/query_service.rb +42 -53
  43. data/lib/valkyrie/persistence/solr/repository.rb +2 -1
  44. data/lib/valkyrie/rdf_patches.rb +2 -2
  45. data/lib/valkyrie/resource.rb +36 -5
  46. data/lib/valkyrie/specs/shared_specs/change_set.rb +1 -1
  47. data/lib/valkyrie/specs/shared_specs/persister.rb +17 -6
  48. data/lib/valkyrie/specs/shared_specs/queries.rb +112 -9
  49. data/lib/valkyrie/storage/fedora.rb +17 -17
  50. data/lib/valkyrie/storage_adapter.rb +16 -13
  51. data/lib/valkyrie/types.rb +3 -1
  52. data/lib/valkyrie/version.rb +1 -1
  53. data/solr/config/solrconfig.xml +0 -10
  54. data/tasks/dev.rake +14 -51
  55. data/valkyrie.gemspec +4 -4
  56. metadata +40 -37
  57. data/.docker-stack/valkyrie-development/docker-compose.yml +0 -53
  58. data/.docker-stack/valkyrie-test/docker-compose.yml +0 -53
  59. data/db/seeds.rb +0 -8
  60. data/tasks/docker.rake +0 -31
@@ -7,7 +7,7 @@ module Valkyrie::Storage
7
7
  SLASH = '/'
8
8
 
9
9
  # @param [Ldp::Client] connection
10
- def initialize(connection:, base_path: "/", fedora_version: 5)
10
+ def initialize(connection:, base_path: "/", fedora_version: Valkyrie::Persistence::Fedora::DEFAULT_FEDORA_VERSION)
11
11
  @connection = connection
12
12
  @base_path = base_path
13
13
  @fedora_version = fedora_version
@@ -83,24 +83,24 @@ module Valkyrie::Storage
83
83
 
84
84
  private
85
85
 
86
- # @return [IOProxy]
87
- def response(id:)
88
- response = connection.http.get(fedora_identifier(id: id))
89
- raise Valkyrie::StorageAdapter::FileNotFound unless response.success?
90
- IOProxy.new(response.body)
91
- end
86
+ # @return [IOProxy]
87
+ def response(id:)
88
+ response = connection.http.get(fedora_identifier(id: id))
89
+ raise Valkyrie::StorageAdapter::FileNotFound unless response.success?
90
+ IOProxy.new(response.body)
91
+ end
92
92
 
93
- def default_resource_uri_transformer
94
- lambda do |resource, base_url|
95
- id = CGI.escape(resource.id.to_s)
96
- RDF::URI.new(base_url + id)
97
- end
93
+ def default_resource_uri_transformer
94
+ lambda do |resource, base_url|
95
+ id = CGI.escape(resource.id.to_s)
96
+ RDF::URI.new(base_url + id)
98
97
  end
98
+ end
99
99
 
100
- def base_url
101
- pre_divider = base_path.starts_with?(SLASH) ? '' : SLASH
102
- post_divider = base_path.ends_with?(SLASH) ? '' : SLASH
103
- "#{connection.http.url_prefix}#{pre_divider}#{base_path}#{post_divider}"
104
- end
100
+ def base_url
101
+ pre_divider = base_path.starts_with?(SLASH) ? '' : SLASH
102
+ post_divider = base_path.ends_with?(SLASH) ? '' : SLASH
103
+ "#{connection.http.url_prefix}#{pre_divider}#{base_path}#{post_divider}"
104
+ end
105
105
  end
106
106
  end
@@ -5,6 +5,7 @@ module Valkyrie
5
5
  # storage backends (such as fedora, disk, etc)
6
6
  class StorageAdapter
7
7
  class FileNotFound < StandardError; end
8
+ class AdapterNotFoundError < StandardError; end
8
9
  class_attribute :storage_adapters
9
10
  self.storage_adapters = {}
10
11
  class << self
@@ -54,10 +55,12 @@ module Valkyrie
54
55
  # @param id [Valkyrie::ID]
55
56
  # @return [Valkyrie::StorageAdapter]
56
57
  def adapter_for(id:)
57
- # TODO: Determine the appropriate response when we have an unhandled :id
58
- storage_adapters.values.find do |storage_adapter|
58
+ handler = storage_adapters.values.find do |storage_adapter|
59
59
  storage_adapter.handles?(id: id)
60
60
  end
61
+
62
+ raise AdapterNotFoundError, 'Unable to find a StorageAdapter' if handler.nil?
63
+ handler
61
64
  end
62
65
  end
63
66
 
@@ -103,20 +106,20 @@ module Valkyrie
103
106
 
104
107
  private
105
108
 
106
- def tmp_file_name
107
- id.to_s.tr(':/', '__')
108
- end
109
+ def tmp_file_name
110
+ id.to_s.tr(':/', '__')
111
+ end
109
112
 
110
- def tmp_file_path
111
- ::File.join(Dir.tmpdir, tmp_file_name)
112
- end
113
+ def tmp_file_path
114
+ ::File.join(Dir.tmpdir, tmp_file_name)
115
+ end
113
116
 
114
- def tmp_file
115
- @tmp_file ||= ::File.open(tmp_file_path, 'w+b') do |f|
116
- IO.copy_stream(io, f)
117
- f
118
- end
117
+ def tmp_file
118
+ @tmp_file ||= ::File.open(tmp_file_path, 'w+b') do |f|
119
+ IO.copy_stream(io, f)
120
+ f
119
121
  end
122
+ end
120
123
  end
121
124
  end
122
125
  end
@@ -84,7 +84,7 @@ module Valkyrie
84
84
  Set = Array.constructor do |value|
85
85
  value = Array[value]
86
86
  clean_values = value.reject do |val|
87
- val == '' || (val.is_a?(Valkyrie::ID) && val.to_s == '')
87
+ (val.is_a?(Valkyrie::ID) && val.to_s == '') || val == ''
88
88
  end.reject(&:nil?).uniq
89
89
 
90
90
  clean_values.map do |val|
@@ -99,6 +99,8 @@ module Valkyrie
99
99
  end
100
100
  Array.singleton_class.include(ArrayDefault)
101
101
  Set.singleton_class.include(ArrayDefault)
102
+ Relation = Valkyrie::Types::Set.of(Valkyrie::Types::ID)
103
+ OrderedRelation = Valkyrie::Types::Array.of(Valkyrie::Types::ID).meta(ordered: true)
102
104
 
103
105
  # Used for when an input may be an array, but the output needs to be a
104
106
  # single string.
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Valkyrie
3
- VERSION = "2.0.0"
3
+ VERSION = "2.1.2"
4
4
  end
@@ -284,16 +284,6 @@
284
284
  -->
285
285
  </searchComponent>
286
286
 
287
- <searchComponent name="suggest" class="solr.SuggestComponent">
288
- <lst name="suggester">
289
- <str name="name">mySuggester</str>
290
- <str name="lookupImpl">FuzzyLookupFactory</str>
291
- <str name="suggestAnalyzerFieldType">textSuggest</str>
292
- <str name="buildOnCommit">true</str>
293
- <str name="field">suggest</str>
294
- </lst>
295
- </searchComponent>
296
-
297
287
  <requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
298
288
  <lst name="defaults">
299
289
  <str name="suggest">true</str>
data/tasks/dev.rake CHANGED
@@ -2,63 +2,26 @@
2
2
 
3
3
  namespace :server do
4
4
  desc "Start solr and fedora servers for testing"
5
- task :test do
5
+ task :start do
6
6
  require 'rails'
7
- require 'solr_wrapper'
8
- require 'fcrepo_wrapper'
9
- SolrWrapper.wrap(shared_solr_opts.merge(port: 8984, instance_dir: 'tmp/blacklight-core-test')) do |solr|
10
- solr.with_collection(name: "blacklight-core-test", dir: Pathname.new(__dir__).join("..", "solr", "config").to_s) do
11
- FcrepoWrapper.wrap(shared_fedora_opts.merge(port: 8988, fcrepo_home_dir: "tmp/fcrepo4-test-data", version: "4.7.5", instance_directory: "tmp/fcrepo4")) do |_fcrepo|
12
- FcrepoWrapper::Instance.new(shared_fedora_opts.merge(port: 8998, fcrepo_home_dir: "tmp/fcrepo5-test-data", version: "5.0.0", instance_directory: "tmp/fcrepo5")).wrap do |_other_repo|
13
- puts "Setup solr & Fedora"
14
- loop do
15
- sleep(1)
16
- end
17
- end
18
- end
19
- end
20
- end
7
+ `lando start`
8
+ `bundle exec rake db:create`
9
+ `bundle exec rake db:migrate`
10
+ puts "Started Solr/Fedora/Postgres"
21
11
  end
22
12
 
23
13
  desc "Cleanup test servers"
24
- task :clean_test do
14
+ task :clean do
25
15
  require 'rails'
26
- require 'solr_wrapper'
27
- require 'fcrepo_wrapper'
28
- SolrWrapper.instance(shared_solr_opts.merge(port: 8984, instance_dir: 'tmp/blacklight-core-test')).remove_instance_dir!
29
- FcrepoWrapper.default_instance(shared_fedora_opts.merge(port: 8988, fcrepo_home_dir: "tmp/fcrepo4-test-data", instance_directory: "tmp/fcrepo4")).remove_instance_dir!
30
- FcrepoWrapper::Instance.new(shared_fedora_opts.merge(port: 8998, fcrepo_home_dir: "tmp/fcrepo5-test-data", instance_directory: "tmp/fcrepo5")).remove_instance_dir!
31
- puts "Cleaned up test solr & fedora servers."
16
+ `lando destroy -y`
17
+ `lando start`
18
+ `bundle exec rake db:create`
19
+ `bundle exec rake db:migrate`
20
+ puts "Cleaned/Started Solr/Fedora/Postgres"
32
21
  end
33
22
 
34
- desc "Start solr and fedora servers for development"
35
- task :development do
36
- require 'rails'
37
- require 'solr_wrapper'
38
- require 'fcrepo_wrapper'
39
-
40
- SolrWrapper.wrap(shared_solr_opts.merge(port: 8983, instance_dir: 'tmp/blacklight-core')) do |solr|
41
- solr.with_collection(name: "blacklight-core", dir: Pathname.new(__dir__).join("..", "solr", "config").to_s) do
42
- FcrepoWrapper.wrap(shared_fedora_opts.merge(port: 8986, fcrepo_home_dir: "tmp/fcrepo4-dev-data", version: "4.7.5")) do |_fcrepo|
43
- FcrepoWrapper::Instance.new(shared_fedora_opts.merge(port: 8996, fcrepo_home_dir: "tmp/fcrepo5-dev-data", version: "5.0.0")).wrap do |_fcrepo|
44
- puts "Setup solr & Fedora"
45
- loop do
46
- sleep(1)
47
- end
48
- end
49
- end
50
- end
51
- end
52
- end
53
-
54
- def shared_solr_opts
55
- opts = { managed: true, verbose: true, persist: false, download_dir: "tmp" }
56
- opts[:version] = ENV['SOLR_VERSION'] if ENV['SOLR_VERSION']
57
- opts
58
- end
59
-
60
- def shared_fedora_opts
61
- opts = { managed: true, verbose: true, enable_jms: false, download_dir: "tmp" }
62
- opts
23
+ desc "Stop test servers"
24
+ task :stop do
25
+ `lando stop -y`
63
26
  end
64
27
  end
data/valkyrie.gemspec CHANGED
@@ -24,18 +24,19 @@ Gem::Specification.new do |spec|
24
24
  spec.add_dependency 'draper'
25
25
  spec.add_dependency 'activemodel'
26
26
  spec.add_dependency 'dry-types', '~> 1.0'
27
- spec.add_dependency 'rdf'
27
+ spec.add_dependency 'rdf', '~> 3.0', '>= 3.0.10'
28
28
  spec.add_dependency 'activesupport'
29
29
  spec.add_dependency 'railties' # To use generators and engines
30
- spec.add_dependency 'reform'
30
+ spec.add_dependency 'reform', '~> 2.2'
31
31
  spec.add_dependency 'reform-rails'
32
32
  spec.add_dependency 'json-ld'
33
33
  spec.add_dependency 'json'
34
34
  spec.add_dependency 'rdf-vocab'
35
35
  spec.add_dependency 'disposable', '~> 0.4.5'
36
+ spec.add_dependency 'faraday', '< 1.0'
36
37
 
37
38
  spec.add_development_dependency "bundler", "> 1.16.0", "< 3"
38
- spec.add_development_dependency "rake", "~> 10.0"
39
+ spec.add_development_dependency "rake", ">= 10"
39
40
  spec.add_development_dependency "rspec", "~> 3.0"
40
41
  spec.add_development_dependency "pry"
41
42
  spec.add_development_dependency "webmock"
@@ -46,7 +47,6 @@ Gem::Specification.new do |spec|
46
47
  spec.add_development_dependency 'yard'
47
48
  spec.add_development_dependency 'solr_wrapper'
48
49
  spec.add_development_dependency 'fcrepo_wrapper'
49
- spec.add_development_dependency 'docker-stack', '~> 0.2.6'
50
50
  spec.add_development_dependency 'timecop'
51
51
  spec.add_development_dependency 'appraisal'
52
52
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: valkyrie
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Trey Pendragon
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-20 00:00:00.000000000 Z
11
+ date: 2021-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-struct
@@ -70,16 +70,22 @@ dependencies:
70
70
  name: rdf
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '3.0'
73
76
  - - ">="
74
77
  - !ruby/object:Gem::Version
75
- version: '0'
78
+ version: 3.0.10
76
79
  type: :runtime
77
80
  prerelease: false
78
81
  version_requirements: !ruby/object:Gem::Requirement
79
82
  requirements:
83
+ - - "~>"
84
+ - !ruby/object:Gem::Version
85
+ version: '3.0'
80
86
  - - ">="
81
87
  - !ruby/object:Gem::Version
82
- version: '0'
88
+ version: 3.0.10
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: activesupport
85
91
  requirement: !ruby/object:Gem::Requirement
@@ -112,16 +118,16 @@ dependencies:
112
118
  name: reform
113
119
  requirement: !ruby/object:Gem::Requirement
114
120
  requirements:
115
- - - ">="
121
+ - - "~>"
116
122
  - !ruby/object:Gem::Version
117
- version: '0'
123
+ version: '2.2'
118
124
  type: :runtime
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
127
  requirements:
122
- - - ">="
128
+ - - "~>"
123
129
  - !ruby/object:Gem::Version
124
- version: '0'
130
+ version: '2.2'
125
131
  - !ruby/object:Gem::Dependency
126
132
  name: reform-rails
127
133
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +198,20 @@ dependencies:
192
198
  - - "~>"
193
199
  - !ruby/object:Gem::Version
194
200
  version: 0.4.5
201
+ - !ruby/object:Gem::Dependency
202
+ name: faraday
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "<"
206
+ - !ruby/object:Gem::Version
207
+ version: '1.0'
208
+ type: :runtime
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "<"
213
+ - !ruby/object:Gem::Version
214
+ version: '1.0'
195
215
  - !ruby/object:Gem::Dependency
196
216
  name: bundler
197
217
  requirement: !ruby/object:Gem::Requirement
@@ -216,16 +236,16 @@ dependencies:
216
236
  name: rake
217
237
  requirement: !ruby/object:Gem::Requirement
218
238
  requirements:
219
- - - "~>"
239
+ - - ">="
220
240
  - !ruby/object:Gem::Version
221
- version: '10.0'
241
+ version: '10'
222
242
  type: :development
223
243
  prerelease: false
224
244
  version_requirements: !ruby/object:Gem::Requirement
225
245
  requirements:
226
- - - "~>"
246
+ - - ">="
227
247
  - !ruby/object:Gem::Version
228
- version: '10.0'
248
+ version: '10'
229
249
  - !ruby/object:Gem::Dependency
230
250
  name: rspec
231
251
  requirement: !ruby/object:Gem::Requirement
@@ -366,20 +386,6 @@ dependencies:
366
386
  - - ">="
367
387
  - !ruby/object:Gem::Version
368
388
  version: '0'
369
- - !ruby/object:Gem::Dependency
370
- name: docker-stack
371
- requirement: !ruby/object:Gem::Requirement
372
- requirements:
373
- - - "~>"
374
- - !ruby/object:Gem::Version
375
- version: 0.2.6
376
- type: :development
377
- prerelease: false
378
- version_requirements: !ruby/object:Gem::Requirement
379
- requirements:
380
- - - "~>"
381
- - !ruby/object:Gem::Version
382
- version: 0.2.6
383
389
  - !ruby/object:Gem::Dependency
384
390
  name: timecop
385
391
  requirement: !ruby/object:Gem::Requirement
@@ -408,7 +414,7 @@ dependencies:
408
414
  - - ">="
409
415
  - !ruby/object:Gem::Version
410
416
  version: '0'
411
- description:
417
+ description:
412
418
  email:
413
419
  - tpendragon@princeton.edu
414
420
  executables: []
@@ -417,9 +423,8 @@ extra_rdoc_files: []
417
423
  files:
418
424
  - ".circleci/config.yml"
419
425
  - ".ctags"
420
- - ".docker-stack/valkyrie-development/docker-compose.yml"
421
- - ".docker-stack/valkyrie-test/docker-compose.yml"
422
426
  - ".gitignore"
427
+ - ".lando.yml"
423
428
  - ".rspec"
424
429
  - ".rubocop.yml"
425
430
  - ".rubocop_todo.yml"
@@ -449,9 +454,8 @@ files:
449
454
  - db/migrate/20180212092225_create_updated_at_index.rb
450
455
  - db/migrate/20180802220739_add_optimistic_locking_to_orm_resources.rb
451
456
  - db/schema.rb
452
- - db/seeds.rb
453
- - gemfiles/activerecord_5_1.gemfile
454
457
  - gemfiles/activerecord_5_2.gemfile
458
+ - gemfiles/activerecord_6_0.gemfile
455
459
  - lib/config/database_connection.rb
456
460
  - lib/generators/valkyrie/resource_generator.rb
457
461
  - lib/generators/valkyrie/templates/resource.rb.erb
@@ -462,6 +466,7 @@ files:
462
466
  - lib/valkyrie/engine.rb
463
467
  - lib/valkyrie/id.rb
464
468
  - lib/valkyrie/indexers/access_controls_indexer.rb
469
+ - lib/valkyrie/logging.rb
465
470
  - lib/valkyrie/metadata_adapter.rb
466
471
  - lib/valkyrie/persistence.rb
467
472
  - lib/valkyrie/persistence/buffered_persister.rb
@@ -555,13 +560,12 @@ files:
555
560
  - solr/config/xslt/luke.xsl
556
561
  - solr/solr.xml
557
562
  - tasks/dev.rake
558
- - tasks/docker.rake
559
563
  - valkyrie.gemspec
560
564
  - valkyrie_logo.png
561
565
  homepage: https://github.com/samvera/valkyrie
562
566
  licenses: []
563
567
  metadata: {}
564
- post_install_message:
568
+ post_install_message:
565
569
  rdoc_options: []
566
570
  require_paths:
567
571
  - lib
@@ -576,9 +580,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
576
580
  - !ruby/object:Gem::Version
577
581
  version: '0'
578
582
  requirements: []
579
- rubyforge_project:
580
- rubygems_version: 2.7.6
581
- signing_key:
583
+ rubygems_version: 3.0.3
584
+ signing_key:
582
585
  specification_version: 4
583
586
  summary: An ORM using the Data Mapper pattern, specifically built to solve Digital
584
587
  Repository use cases.
@@ -1,53 +0,0 @@
1
- ---
2
- version: '3.4'
3
- volumes:
4
- fedora4:
5
- fedora5:
6
- db:
7
- solr_repo:
8
- solr_index:
9
- services:
10
- fedora4:
11
- image: nulib/fcrepo4:4.7.5
12
- volumes:
13
- - fedora4:/data
14
- ports:
15
- - 8986:8080
16
- fedora5:
17
- image: nulib/fcrepo4:5.0.0
18
- volumes:
19
- - fedora5:/data
20
- ports:
21
- - 8996:8080
22
- db:
23
- image: healthcheck/postgres:alpine
24
- volumes:
25
- - db:/data
26
- environment:
27
- - PGDATA=/data
28
- - POSTGRES_USER=docker
29
- - POSTGRES_PASSWORD=d0ck3r
30
- ports:
31
- - 5433:5432
32
- solr_repo:
33
- image: solr:7.2-alpine
34
- ports:
35
- - 8983:8983
36
- volumes:
37
- - solr_repo:/opt/solr/server/solr/mycores
38
- - "../../solr:/solr_config"
39
- entrypoint:
40
- - docker-entrypoint.sh
41
- - solr-precreate
42
- - blacklight-core
43
- - "/solr_config/config"
44
- healthcheck:
45
- test:
46
- - CMD
47
- - wget
48
- - "-O"
49
- - "/dev/null"
50
- - http://localhost:8983/solr/
51
- interval: 30s
52
- timeout: 5s
53
- retries: 3