Skip to content

Commit 14d91a3

Browse files
Merge pull request #340 from marklogic/release-2.1.2
Release 2.1.2
2 parents 814f10b + f9c480a commit 14d91a3

13 files changed

+174
-112
lines changed

Jenkinsfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ pipeline {
354354

355355
parameters {
356356
string(name: 'emailList', defaultValue: emailList, description: 'List of email for build notification', trim: true)
357-
string(name: 'dockerVersion', defaultValue: '2.1.1', description: 'ML Docker version. This version along with ML rpm package version will be the image tag as {ML_Version}_{dockerVersion}', trim: true)
357+
string(name: 'dockerVersion', defaultValue: '2.1.2', description: 'ML Docker version. This version along with ML rpm package version will be the image tag as {ML_Version}_{dockerVersion}', trim: true)
358358
choice(name: 'dockerImageType', choices: 'ubi-rootless\nubi\nubi9-rootless\nubi9', description: 'Platform type for Docker image. Will be made part of the docker image tag')
359359
string(name: 'upgradeDockerImage', defaultValue: '', description: 'Docker image for testing upgrades. Defaults to ubi image if left blank.\n Currently upgrading to ubi-rotless is not supported hence the test is skipped when ubi-rootless image is provided.', trim: true)
360360
choice(name: 'marklogicVersion', choices: '11\n12\n10', description: 'MarkLogic Server Branch. used to pick appropriate rpm')

LICENSE.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright © 2023 MarkLogic Corporation.
1+
Copyright © 2018-2024 MarkLogic Corporation.
22

33
Licensed 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
44

NOTICE.txt

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
MarkLogic® Docker Container Image v2.1.1
1+
MarkLogic® Docker Container Image v2
22

3-
Copyright © 2022-2024 MarkLogic Corporation. MarkLogic and MarkLogic logo are trademarks or registered trademarks of MarkLogic Corporation in the United States and other countries. All other trademarks are the property of their respective owners.
3+
Copyright © 2018-2025 MarkLogic Corporation. MarkLogic and MarkLogic logo are trademarks or registered trademarks of MarkLogic Corporation in the United States and other countries. All other trademarks are the property of their respective owners.
44

55
This project is licensed under the Apache License, Version 2.0 (the "License"); you may not use this project except in compliance with the License. You may obtain a copy of the License at
66

@@ -21,11 +21,11 @@ Licensee is responsible for obtaining, at its own expense, any required licenses
2121
Third Party Components
2222

2323
RedHat UBI Docker Base Image 8 (Commercial)
24-
RedHat UBI Docker Base Image 9 (Commercial)
25-
robotframework 7.0 (Apache-2.0)
26-
robotframework-requests 0.9.7 (MIT)
27-
test (MIT)
28-
Tini 0.19.0 (MIT)
24+
RedHat UBI Docker Base Image 9 (Commercial)
25+
robotframework 7.0 (Apache-2.0)
26+
robotframework-requests 0.9.7 (MIT)
27+
test (MIT)
28+
Tini 0.19.0 (MIT)
2929

3030
Common Licenses
3131

@@ -85,6 +85,7 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
8585
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8686
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8787

88+
-------------------------------------------------------------------------
8889

8990
Common License Appendix
9091

@@ -139,3 +140,4 @@ You may add Your own copyright statement to Your modifications and may provide a
139140
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
140141

141142
END OF TERMS AND CONDITIONS
143+

README.md

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,21 @@ Docker images are maintained by MarkLogic. Send feedback to the MarkLogic Docker
4646

4747
Supported Docker architectures: x86_64
4848

49-
Base OS: UBI8 and UBI9 with rootless variants.
49+
Base OS: UBI8 and UBI9 with `rootless` variants.
5050

5151
Published image artifact details: https://github.com/marklogic/marklogic-docker, https://hub.docker.com/r/progressofficial/marklogic-db
5252

53+
## Docker image hardening
54+
55+
Docker images with `rootless` variants are hardened using Openscap (<https://github.com/OpenSCAP/openscap>).
56+
57+
Scoring : 96.67%
58+
See [Known Issues and Limitations](#known-issues-and-limitations)
59+
60+
## FIPS Enabled
61+
62+
Only Docker images under Base OS UBI8 with `rootless` variants are FIPS enabled following RedHat (<https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/security_hardening/switching-rhel-to-fips-mode_security-hardening#enabling-fips-mode-in-a-container_using-the-system-wide-cryptographic-policies>)
63+
5364
# MarkLogic
5465

5566
[MarkLogic Server](http://www.marklogic.com/) is a multi-model database that has both NoSQL and trusted enterprise data management capabilities. It is the most secure multi-model database, and it’s deployable in any environment.
@@ -853,6 +864,14 @@ The /space mounted on the Docker volume can now be used as backup directory for
853864

854865
# Debugging
855866

867+
## Platform warnings on Apple Silicon
868+
869+
When running the MarkLogic Docker image on Apple Silicon, you may see the following warning message:
870+
`WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested`
871+
872+
Add the `--platform linux/amd64` flag to the `docker run` command to avoid this warning message.
873+
874+
856875
## View MarkLogic Server Startup Status
857876
To check the MarkLogic Server startup status, run the below command to tail the MarkLogic log file
858877
```
@@ -901,7 +920,7 @@ $ docker exec -it f484a784d998 /bin/bash
901920
4. To verify that MarkLogic is running, use this command:
902921

903922
```
904-
$ sudo service MarkLogic status
923+
$ service MarkLogic status
905924
```
906925

907926
Example output:
@@ -915,7 +934,7 @@ MarkLogic (pid 34) is running...
915934
For example, you can list the 8001 error logs, and view them with a single command:
916935

917936
```
918-
$ sudo cd /var/opt/MarkLogic/Logs && ls && vi ./8001_ErrorLog.txt
937+
$ cd /var/opt/MarkLogic/Logs && ls && cat ./8001_ErrorLog.txt
919938
```
920939

921940
6. To exit the container when you are through debugging, use the exit command:
@@ -1049,8 +1068,13 @@ Where is calculated as described in the [Configuring HugePages](https://github.c
10491068
3. Rejoining a node to a cluster, that had previously left that cluster, may not succeed.
10501069
4. MarkLogic Server will default to the UTC timezone.
10511070
5. The latest released version of RedHat UBI images have known security vulnerabilities.
1052-
- CVE-2024-6602, CVE-2024-34397, CVE-2024-2236, CVE-2023-7207, CVE-2023-51764, CVE-2023-37920, CVE-2023-32636, CVE-2023-29499, CVE-2023-2650, CVE-2022-4899, CVE-2021-42694, CVE-2021-3997, CVE-2020-35512, CVE-2020-15945, CVE-2019-9937, CVE-2019-9936, CVE-2019-9705, CVE-2019-19244, CVE-2019-17543, CVE-2019-12904, CVE-2019-12900, CVE-2018-20839, CVE-2024-6602, CVE-2024-6119, CVE-2024-26462, CVE-2024-2236, CVE-2023-7207, CVE-2023-37920, CVE-2023-2953, CVE-2022-4899, CVE-2021-3997, CVE-2024-10041
1071+
- CVE-2024-6602, CVE-2024-34397, CVE-2024-2236, CVE-2023-7207, CVE-2023-51764, CVE-2023-37920, CVE-2023-32636, CVE-2023-29499, CVE-2023-2650, CVE-2022-4899, CVE-2021-42694, CVE-2021-3997, CVE-2020-35512, CVE-2020-15945, CVE-2019-9937, CVE-2019-9936, CVE-2019-9705, CVE-2019-19244, CVE-2019-17543, CVE-2019-12904, CVE-2019-12900, CVE-2018-20839, CVE-2024-6119, CVE-2024-26462, CVE-2024-2236, CVE-2023-7207, CVE-2023-2953, CVE-2022-4899, CVE-2024-10041, CVE-2022-49043
10531072

10541073
These libraries are included in the RedHat UBI base images but, to-date, no fixes have been made available. Even though these libraries may be present in the base image that is used by MarkLogic Server, they are not used by MarkLogic Server itself, hence there is no impact or mitigation required.
10551074

10561075
6. As part of the hardening process, the following packages are removed from the image: `vim-minimal`, `cups-client`, `cups-libs`, `tar`, `python3-pip-wheel`, `platform-python`, `python3-libs`, `platform-python-setuptools`, `avahi-libs`, `binutils`, `expat`, `libarchive`, `python3`, `python3-libs`, `python-unversioned-command`. These packages are not required for the operation of MarkLogic Server and are removed to reduce the attack surface of the image. If you require any of these packages, you can install them in your own Dockerfile.
1076+
1077+
7. The scoring of the hardening process is 96.67% that because `authselect is not used but files from the 'pam' package have been altered, so the authselect configuration won't be forced.`
1078+
1079+
It is a medium severity and not applicable in container environment there is not authentication required when login into a container.
1080+
8. The cryptographic modules of RHEL 9 are not yet certified for the FIPS 140-3 requirements.

dockerFiles/marklogic-deps-ubi9:base

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
###############################################################
22
#
3-
# Copyright (c) 2023 MarkLogic Corporation
3+
# Copyright © 2018-2025 MarkLogic Corporation
44
#
55
###############################################################
66

7-
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1733767867
7+
FROM registry.access.redhat.com/ubi9/ubi-minimal:9.5-1741850109
88
LABEL "com.marklogic.maintainer"="[email protected]"
99

1010
###############################################################
1111
# install libnsl rpm package
1212
###############################################################
1313

1414
RUN microdnf -y update \
15-
&& curl -Lso libnsl.rpm https://bed-artifactory.bedford.progress.com:443/artifactory/ml-rpm-release-tierpoint/devdependencies/libnsl-2.34-125.el9_5.1.x86_64.rpm \
15+
&& curl -Lso libnsl.rpm https://bed-artifactory.bedford.progress.com:443/artifactory/ml-rpm-release-tierpoint/devdependencies/libnsl-2.34-125.el9_5.3.x86_64.rpm \
1616
&& rpm -i libnsl.rpm \
1717
&& rm -f libnsl.rpm
1818

@@ -21,7 +21,7 @@ RUN microdnf -y update \
2121
###############################################################
2222
# hadolint ignore=DL3006
2323
RUN echo "NETWORKING=yes" > /etc/sysconfig/network \
24-
&& microdnf -y install --setopt install_weak_deps=0 gdb nss libtool-ltdl cpio tzdata util-linux \
24+
&& microdnf -y install --setopt install_weak_deps=0 gdb nss libtool-ltdl cpio tzdata util-linux hostname \
2525
&& microdnf clean all
2626

2727

dockerFiles/marklogic-deps-ubi:base

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
###############################################################
22
#
3-
# Copyright (c) 2023 MarkLogic Corporation
3+
# Copyright © 2018-2025 MarkLogic Corporation
44
#
55
###############################################################
66

7-
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.10-1130
7+
FROM registry.access.redhat.com/ubi8/ubi-minimal:8.10-1179.1741795396
88
LABEL "com.marklogic.maintainer"="[email protected]"
99

1010
###############################################################
1111
# install libnsl rpm package
1212
###############################################################
1313

1414
RUN microdnf -y update \
15-
&& curl -Lso libnsl.rpm https://bed-artifactory.bedford.progress.com:443/artifactory/ml-rpm-release-tierpoint/devdependencies/libnsl-2.28-251.el8_10.5.x86_64.rpm \
15+
&& curl -Lso libnsl.rpm https://bed-artifactory.bedford.progress.com:443/artifactory/ml-rpm-release-tierpoint/devdependencies/libnsl-2.28-251.el8_10.14.x86_64.rpm \
1616
&& rpm -i libnsl.rpm \
1717
&& rm -f libnsl.rpm
1818

@@ -21,7 +21,7 @@ RUN microdnf -y update \
2121
###############################################################
2222
# hadolint ignore=DL3006
2323
RUN echo "NETWORKING=yes" > /etc/sysconfig/network \
24-
&& microdnf -y install --setopt install_weak_deps=0 gdb redhat-lsb-core initscripts tzdata glibc libstdc++.i686 \
24+
&& microdnf -y install --setopt install_weak_deps=0 gdb redhat-lsb-core initscripts tzdata glibc libstdc++.i686 hostname \
2525
&& microdnf clean all
2626

2727

dockerFiles/marklogic-server-ubi-rootless:base

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
###############################################################
22
#
3-
# Copyright (c) 2023 MarkLogic Corporation
3+
# Copyright © 2018-2025 MarkLogic Corporation
44
#
55
###############################################################
66

@@ -71,7 +71,7 @@ FROM ${BASE_IMAGE}
7171
COPY --from=builder / /
7272

7373
ARG ML_USER="marklogic_user"
74-
ARG ML_VERSION=10-internal
74+
ARG ML_VERSION=11-internal
7575
ARG ML_DOCKER_VERSION=local
7676
ARG BUILD_BRANCH=local
7777
ARG ML_DOCKER_TYPE=ubi

dockerFiles/marklogic-server-ubi:base

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
###############################################################
22
#
3-
# Copyright (c) 2023 MarkLogic Corporation
3+
# Copyright © 2018-2025 MarkLogic Corporation
44
#
55
###############################################################
66

@@ -59,7 +59,7 @@ FROM ${BASE_IMAGE}
5959
COPY --from=builder / /
6060

6161
ARG ML_USER="marklogic_user"
62-
ARG ML_VERSION=10-internal
62+
ARG ML_VERSION=11-internal
6363
ARG ML_DOCKER_VERSION=local
6464
ARG BUILD_BRANCH=local
6565
ARG ML_DOCKER_TYPE=ubi

src/scripts/start-marklogic-rootless.sh

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#! /bin/bash
22
###############################################################
33
#
4-
# Copyright 2023 MarkLogic Corporation. All Rights Reserved.
4+
# Copyright © 2018-2025 MarkLogic Corporation. All Rights Reserved.
55
#
66
###############################################################
77
# Initialise and start MarkLogic server
@@ -32,11 +32,6 @@ log () {
3232
echo "${TIMESTAMP} ${LOG_LEVEL}: $*"
3333
}
3434

35-
###############################################################
36-
# removing MarkLogic ready file and create it when 8001 is accessible on node
37-
###############################################################
38-
rm -f /var/opt/MarkLogic/ready
39-
4035
###############################################################
4136
# Prepare script
4237
###############################################################
@@ -92,8 +87,6 @@ else
9287
error "INSTALL_CONVERTERS must be true or false." exit
9388
fi
9489

95-
96-
# Values taken directy from documentation: https://docs.marklogic.com/guide/admin-api/cluster#id_10889
9790
N_RETRY=5
9891
RETRY_INTERVAL=10
9992

@@ -113,7 +106,7 @@ function restart_check {
113106
local retry_count LAST_START
114107
LAST_START=$(curl -s --anyauth --user "${ML_ADMIN_USERNAME}":"${ML_ADMIN_PASSWORD}" "http://$1:8001/admin/v1/timestamp")
115108
for ((retry_count = 0; retry_count < N_RETRY; retry_count = retry_count + 1)); do
116-
if [ "$2" == "${LAST_START}" ] || [ -z "${LAST_START}" ]; then
109+
if [[ "$2" == "${LAST_START}" ]] || [[ -z "${LAST_START}" ]]; then
117110
sleep ${RETRY_INTERVAL}
118111
LAST_START=$(curl -s --anyauth --user "${ML_ADMIN_USERNAME}":"${ML_ADMIN_PASSWORD}" "http://$1:8001/admin/v1/timestamp")
119112
else
@@ -174,7 +167,7 @@ function validate_cert {
174167
local curl_output
175168
curl_output=$(curl -s -S -L --cacert "${cacertfile}" --ssl "${ML_BOOTSTRAP_PROTOCOL}"://"${MARKLOGIC_BOOTSTRAP_HOST}":8001 --anyauth --user "${ML_ADMIN_USERNAME}":"${ML_ADMIN_PASSWORD}")
176169
return_code=$?
177-
if [ $return_code -ne 0 ]; then
170+
if [[ $return_code != 0 ]]; then
178171
info "$curl_output"
179172
error "MARKLOGIC_JOIN_CACERT_FILE is not valid, please check above error for details. Node shutting down." exit
180173
fi
@@ -214,10 +207,10 @@ function curl_retry_validate {
214207

215208
sleep ${RETRY_INTERVAL}
216209
done
217-
if [[ "${return_error}" = "false" ]] ; then
210+
if [[ "${return_error}" == "false" ]] ; then
218211
return "${response_code}"
219212
fi
220-
[ -f "start-marklogic_curl_retry_validate.log" ] && cat start-marklogic_curl_retry_validate.log
213+
[[ -f "start-marklogic_curl_retry_validate.log" ]] && cat start-marklogic_curl_retry_validate.log
221214
error "Expected response code ${expected_response_code}, got ${response_code} from ${endpoint}." exit
222215
}
223216

@@ -470,31 +463,29 @@ fi
470463
# use latest health check only for version 11 and up
471464
if [[ "${MARKLOGIC_VERSION}" =~ "10" ]] || [[ "${MARKLOGIC_VERSION}" =~ "9" ]]; then
472465
HEALTH_CHECK="7997"
473-
else
466+
else
474467
HEALTH_CHECK="7997/LATEST/healthcheck"
468+
OLD_HEALTH_CHECK="7997"
475469
fi
476470
ML_HOST_PROTOCOL=$(get_host_protocol "localhost" "7997")
477471

478472
while true
479473
do
480474
HOST_RESP_CODE=$(curl "${ML_HOST_PROTOCOL}"://"${HOSTNAME}":"${HEALTH_CHECK}" -X GET -o host_health.xml -s -w "%{http_code}\n" --cacert "${ML_CACERT_FILE}")
481-
if [[ "${MARKLOGIC_INIT}" == "true" ]] && [ "${HOST_RESP_CODE}" -eq 200 ]; then
482-
touch /var/opt/MarkLogic/ready
483-
info "Cluster config complete, marking this container as ready."
484-
break
485-
elif [[ "${MARKLOGIC_INIT}" != "true" ]]; then
486-
touch /var/opt/MarkLogic/ready
487-
info "Cluster config complete, marking this container as ready."
488-
rm -f host_health.xml
489-
break
490-
elif [[ -f /var/opt/MarkLogic/DOCKER_INIT ]] && [ "${HOST_RESP_CODE}" -eq 200 ]; then
491-
touch /var/opt/MarkLogic/ready
475+
if [[ "${HOST_RESP_CODE}" == "200" ]] || [[ "${MARKLOGIC_INIT}" != "true" ]]; then
492476
info "Cluster config complete, marking this container as ready."
493477
break
478+
elif [[ "${HOST_RESP_CODE}" == "404" ]]; then
479+
# check old healthcheck in case of upgrade
480+
HOST_RESP_CODE=$(curl "${ML_HOST_PROTOCOL}"://"${HOSTNAME}":"${OLD_HEALTH_CHECK}" -X GET -o host_health.xml -s -w "%{http_code}\n" --cacert "${ML_CACERT_FILE}")
481+
if [[ "${HOST_RESP_CODE}" == "200" ]]; then
482+
info "Cluster config complete, marking this container as ready."
483+
break
484+
fi
494485
else
495486
info "MarkLogic not ready yet, retrying."
496-
sleep 5
497487
fi
488+
sleep 5
498489
done
499490

500491
################################################################

0 commit comments

Comments
 (0)