: - _/solr - docker run solr:9.0 (Official Docker Image) : - apache/solr - docker run apache/solr:9.0 : : The benefits of the first are 1) the nice usability of being able to : plainly specify "solr" and 2) the "Docker Official Images" badge on : DockerHub. The downsides are that there are very strict requirements with : creating Official Docker Images, which would complicate and require : separating the way that we build release docker images and local docker : images.
I don't know that this is strictly true? I think it would be possible to support "local" images and "release" images fairly easily w/ a small amount of tooling, but more on this idea farther below... : *I think there is some consensus that choosing the "apache/solr" location : is fine, and worth the added flexibility we get in the build process.* ... : *The current opinion in the community is to abandon the "Docker Official : Images" style process of downloading and validating official binaries, and : instead having the release manager use the local-build image creation with : the final release source.* This should result in the same docker image in : the end, however there is no trust built into the docker image itself. : Instead we are likely going to document a way for users to verify the : docker-image contents themselves. "Citation Needed" :) Seriously though ... can you point me to when/where there has been discussion/concensus about this? And which community exactly are you refering to? -- Because I suspect that on the subject of where/how to build the Docker images and if/how-much it matters wether they live in _/solr vs apache/solr you may find a discrepency between the "community of solr comitters" and the "docker user community". Keep in mind: Mak didn't jump through the neccessary hoops all those years ago to create _/solr just because he thought it would be fun -- it would have been a lot easier to just create & publish makuk66/solr images, but there was a (docker) community desire to have "Docker official" _/solr images. I think it would be presumptuous to assume that (docker) community desire is going to go away just because the (apache solr) community is now willing to publish apache/solr images. With that in mind, I *think* there is a relatively straight forward way we can have a "best of both worlds" type situation.... DISCLAIMER: I am not a docker expect, nor am i an expert on the docker-hub rules for "official" images -- the idea below is just based on how the current docker-solr/docker-solr github repo works. (I should also mention I'm not up to speed on the docker related bits in lucene-solr master for building "local" images, for now I'm just ignoring that and assuming it's fair game to start over from scratch with how building docker images from a source release/checkout work) The crux of my suggestion is that we keep a Dockerfile.template in the lucene-solr repo, on master (and any future branches) which has templated values for the SOLR_VERSION and SHA512 of the "solr-SOLR_VERSION.tgz" file names. as part of the "gradle assemble" process, right after gradle creates ./packaging/build/distributions/solr-FOO.tgz and ./packaging/build/distributions/solr-FOO.tgz.sha512, the Dockerfile.template should be used to create Dockerfile with the corisponding file names and SHA512 values hardcoded into it. the Dockerfile(.template) should have COPY directive that looks something like... COPY ./solr-FOO.tgz* /opt/solr/dist-archive ...followed by a RUN command invoking bash conditionals to download solr-FOO.tgz from SOLR_DOWNLOAD_URL into /opt/solr/dist-archive if and only if /opt/solr/dist-archive/solr-FOO.tgz doesn't already exist -- and if it does exist to touch some file /opt/solr/dist-archive/this.is.a.local.build.txt RUN script logic after this should attempt GPG validation (via KEYS & asc files fetched from dist.apache.org) if and only if /opt/solr/dist-archive/this.is.a.local.build.txt does not exist. (Either way the hardcoded SHA512 value should be used to validate the tgz file matches expectations) This should allow us to have "Local" docker builds that don't require any network access or downloading special files either by putting the (post-templating) Dockerfile directly in ./packaging/build/distributions/ and telling people to use that as the context for "docker build" or by some other gradle helper logic for constructing a special "docker context dir" for people to build from where gradle copies the solr-FOO.tgz file. "Official" docker-solr builds could use the exact same Dockerfile -- committed to the docker-solr/docker-solr (or some future apache/docker-solr) repo by the RM via some release publishing scripts (Any other "files" in the lucene-solr git repo that we want to be part of docker images could likewise be copied to the "local" docker context dir by gradle and/or to the apache/docker-solr repo by the release publishing scripts -- but I would argue that as much as possible those files should "live" inside the solr-FOO.tgz binary release) Does anyone see any holes in this idea that i've missed? ... the need for a "pre-processing" step to convert Dockerfile.template -> Dockerfile may seem like a disadvantage of this process compared to other "simpler" ways to build a "local" docker image (w/o needing any hard coded values) but no matter what type of local docker image build process we'd like to have, users will have to run *some* gradle command to compile the source code, etc... so it doesn't seem like that much of a headache to add this if it means the resulting Dockerfiles are also "viable" for use as official _/solr Dockerfiles -Hoss http://www.lucidworks.com/ --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org