This is an automated email from the ASF dual-hosted git repository.

houston pushed a commit to branch branch_9_0
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/branch_9_0 by this push:
     new 96bb283  SOLR-15956: Docs for building a Docker image from the TGZ 
(#572)
96bb283 is described below

commit 96bb28303424e40d1db18a9904729521d12926dc
Author: Houston Putman <[email protected]>
AuthorDate: Mon Jan 31 11:26:56 2022 -0500

    SOLR-15956: Docs for building a Docker image from the TGZ (#572)
    
    * Rename "Dockerfile.local" to "Dockerfile" in the TGZ
    * Remove the Dockerfile from the Docker image, as it is not needed there.
    
    Co-authored-by: Jan Høydahl <[email protected]>
    (cherry picked from commit f19b9e86e32ee7cd611781ed68eed3e1a64c035e)
---
 README.md                                      |  3 ++
 solr/README.md                                 |  5 +--
 solr/docker/README.md                          | 49 ++++++++++++++++++++++++++
 solr/docker/build.gradle                       | 10 ++++--
 solr/docker/templates/Dockerfile.body.template |  5 +--
 solr/prometheus-exporter/README.md             | 14 ++++++++
 solr/solr-ref-guide/src/installing-solr.adoc   |  2 ++
 solr/solr-ref-guide/src/solr-in-docker.adoc    |  1 -
 8 files changed, 81 insertions(+), 8 deletions(-)

diff --git a/README.md b/README.md
index 4ba4982..da21144 100644
--- a/README.md
+++ b/README.md
@@ -116,6 +116,9 @@ For more info on building an image, run:
 
 `./gradlew helpDocker`
 
+Docker images can also be built from the Solr binary distribution (i.e. 
`solr-<version>.tgz`).
+Please refer to the [Solr Docker README](solr/docker/README.md) for more 
information.
+
 ### Running Solr on Kubernetes
 
 Solr has official support for running on Kubernetes, in the official Docker 
image.
diff --git a/solr/README.md b/solr/README.md
index bacd30c..24c53b2 100644
--- a/solr/README.md
+++ b/solr/README.md
@@ -156,8 +156,9 @@ prometheus-exporter/
   Contains a separate application to monitor Solr instances and export 
Prometheus metrics
 
 docker/
-  Contains a docker file to build a Docker image using the source binary 
distribution.
-  docker/scripts contains scripts that the docker image uses to manage Solr.
+  Contains a Dockerfile to build a Docker image using the source or binary 
distribution.
+  `docker/scripts` contains scripts that the Docker image uses to manage Solr.
+  Refer to the README.md for instructions on how to build an image.
 
 docs/index.html
   A link to the online version of Apache Solr Javadoc API documentation and 
Tutorial
diff --git a/solr/docker/README.md b/solr/docker/README.md
new file mode 100644
index 0000000..c50c493
--- /dev/null
+++ b/solr/docker/README.md
@@ -0,0 +1,49 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+Solr Docker
+----
+
+This Solr docker module creates both a local Docker image from the source as 
well as the official Solr Dockerfile.
+This allows for local images to be completely compatible with the official 
Solr images available on DockerHub.
+
+In order to build/test/tag your Docker images using local Solr source code, 
please refer to `./gradlew helpDocker` in a git checkout or a source-release 
download.
+
+Please refer to the [Solr Reference 
Guide](https://solr.apache.org/guide/solr-in-docker.html) for information on 
using the Solr Docker image.
+
+Building from the Solr Binary Distribution
+----
+
+Officially-compliant Docker images can be built directly from the Solr binary 
distribution (i.e. `solr-<version>.tgz`).
+A Dockerfile is included in the binary distribution, under 
`solr-<version>/docker/Dockerfile`, and is the same one used when building a 
docker image via Gradle.
+
+To build the Docker image, pass the Solr TGZ as the Docker context and provide 
the path of the Dockerfile.
+Note, that Docker will accept either a URL or a local TGZ file, but each 
require slightly different syntax.
+Therefore custom Solr releases or official releases can be used to create 
custom Solr images.
+
+```bash
+docker build -f solr-X.Y.Z/docker/Dockerfile - < solr-X.Y.Z.tgz
+docker build -f solr-X.Y.Z/docker/Dockerfile 
https://www.apache.org/dyn/closer.lua/solr/X.Y.Z/solr-X.Y.Z.tgz
+```
+
+When building the image, Solr accepts arguments for customization. Currently 
only one argument is accepted:
+
+- `BASE_IMAGE`: Change the base java image for Solr. This can be used to 
change java versions, jvms, etc.
+
+```bash
+docker build --build-arg BASE_IMAGE=custom/jdk:17-slim -f 
solr-X.Y.Z/docker/Dockerfile 
https://www.apache.org/dyn/closer.lua/solr/X.Y.Z/solr-X.Y.Z.tgz
+```
diff --git a/solr/docker/build.gradle b/solr/docker/build.gradle
index 2a7ee3f..a44a92d 100644
--- a/solr/docker/build.gradle
+++ b/solr/docker/build.gradle
@@ -106,9 +106,13 @@ task assemblePackaging(type: Sync) {
 
   from(projectDir, {
     include "scripts/**"
+    include "README.md"
   })
   from(dockerfilesDirPath, {
     include 'Dockerfile.local'
+    rename {
+      'Dockerfile'
+    }
   })
   into packagingDir
 }
@@ -127,7 +131,7 @@ task dockerBuild(dependsOn: configurations.solrTgz) {
     exec {
       standardInput = configurations.solrTgz.singleFile.newDataInputStream()
       commandLine "docker", "build",
-              "-f", "solr-${version}/docker/Dockerfile.local",
+              "-f", "solr-${version}/docker/Dockerfile",
               "--iidfile", imageIdFile,
               "--build-arg", "BASE_IMAGE=${inputs.properties.baseDockerImage}",
               "-"
@@ -173,7 +177,7 @@ task dockerTag(dependsOn: tasks.dockerBuild) {
 
 task testDocker(type: TestDockerImageTask, dependsOn: tasks.dockerBuild) {
   group = 'Docker'
-  description = 'Test Solr docker image built from Dockerfile.local'
+  description = 'Test Solr docker image built from the local Dockerfile'
 
   idFile = tasks.dockerBuild.outputs.files.singleFile
   outputDir = file("$buildDir/test-results")
@@ -436,7 +440,7 @@ task testBuildDockerfileOfficial(type: Copy) {
 }
 
 task testDockerfileOfficial(type: TestDockerImageTask, dependsOn: 
configurations.dockerOfficialSmokeCheckImage) {
-  description = 'Smoke Test Solr docker image built from Dockerfile.official'
+  description = 'Smoke Test Solr docker image built from the official 
Dockerfile'
 
   idFile = file(imageIdFileOfficial)
   outputDir = file("$smokeTestOfficial/test-results")
diff --git a/solr/docker/templates/Dockerfile.body.template 
b/solr/docker/templates/Dockerfile.body.template
index dc37008..8c6af02 100644
--- a/solr/docker/templates/Dockerfile.body.template
+++ b/solr/docker/templates/Dockerfile.body.template
@@ -26,10 +26,11 @@
 #-#
 #-#
 
-# add symlink to /opt/solr, remove what we don't want
+# add symlink to /opt/solr, remove what we don't want.
+# Remove the Dockerfile because it might not represent the dockerfile that was 
used to generate the image.
 RUN set -ex; \
   (cd /opt; ln -s solr-*/ solr); \
-  rm -Rf /opt/solr/docs;
+  rm -Rf /opt/solr/docs /opt/solr/docker/Dockerfile;
 
 LABEL maintainer="The Apache Solr Project"
 LABEL url="https://solr.apache.org";
diff --git a/solr/prometheus-exporter/README.md 
b/solr/prometheus-exporter/README.md
index f69556d..45e1240 100644
--- a/solr/prometheus-exporter/README.md
+++ b/solr/prometheus-exporter/README.md
@@ -7,3 +7,17 @@ Apache Solr Prometheus Exporter (solr-exporter) provides a way 
for you to expose
 
 For information on how to get started with solr-exporter please see:
  * [Solr Reference Guide's section on Monitoring Solr with Prometheus and 
Grafana](https://solr.apache.org/guide/monitoring-with-prometheus-and-grafana.html)
+
+# Docker
+
+The Solr Prometheus Exporter can be run via the official or local Solr docker 
image.
+Please refer to the `docker` directory's `README.md` for information on 
building the image
+and the [Solr Reference 
Guide](https://solr.apache.org/guide/solr-in-docker.html) for information on 
using the image.
+
+The `solr-exporter` script is available on the path by default in the Docker 
image, so the Prometheus Exporter can be run using:
+
+```bash
+docker run <image> solr-exporter
+```
+
+The environment variables and command line arguments that the Prometheus 
Exporter accepts can be used the same way in the Docker image.
diff --git a/solr/solr-ref-guide/src/installing-solr.adoc 
b/solr/solr-ref-guide/src/installing-solr.adoc
index 7831929..9082308 100644
--- a/solr/solr-ref-guide/src/installing-solr.adoc
+++ b/solr/solr-ref-guide/src/installing-solr.adoc
@@ -101,6 +101,8 @@ See the 
<<monitoring-with-prometheus-and-grafana.adoc#,documentation>> for more
 docker/::
 This contains a Dockerfile to build a Docker image from the binary 
distribution, that is compatible with the official image.
 This directory also contains the scripts needed when using Solr inside the 
Docker image, under the `scripts/` directory.
+The `README.md` in this directory describes how custom Solr Docker images can 
be built using this binary distribution.
+Refer to the <<solr-in-docker.adoc#,Running Solr in Docker>> page for 
information on using a Solr Docker image.
 
 docs/::
 The `docs` directory includes a link to online Javadocs for Solr.
diff --git a/solr/solr-ref-guide/src/solr-in-docker.adoc 
b/solr/solr-ref-guide/src/solr-in-docker.adoc
index 4953e4c..ab7ac6c 100644
--- a/solr/solr-ref-guide/src/solr-in-docker.adoc
+++ b/solr/solr-ref-guide/src/solr-in-docker.adoc
@@ -22,7 +22,6 @@
 
 Instructions below apply to `solr:8.0.0` and above.
 
-
 See the https://hub.docker.com/_/solr?tab=tags[Docker Hub page] for a full 
list of tags and architectures available.
 
 === Running Solr with host-mounted directories

Reply via email to