mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Tobias Gesellchen
02.25.2022 804560786243ccd4aecc0bef1b1ea12e4f8a5a4f
Support to load plain ldif files during container setup (#223)

* chore: reformat shell scripts

* declare the admin port as env variable

* Load plain ldif files during setup
5 files modified
66 ■■■■ changed files
opendj-packages/opendj-docker/Dockerfile 4 ●●●● patch | view | raw | blame | history
opendj-packages/opendj-docker/Dockerfile-alpine 4 ●●●● patch | view | raw | blame | history
opendj-packages/opendj-docker/bootstrap/replicate.sh 14 ●●●●● patch | view | raw | blame | history
opendj-packages/opendj-docker/bootstrap/setup.sh 36 ●●●●● patch | view | raw | blame | history
opendj-packages/opendj-docker/run.sh 8 ●●●● patch | view | raw | blame | history
opendj-packages/opendj-docker/Dockerfile
@@ -5,6 +5,7 @@
ENV ADD_BASE_ENTRY="--addBaseEntry" \
    PORT=1389 \
    LDAPS_PORT=1636 \
    ADMIN_PORT=4444 \
    BASE_DN=${BASE_DN:-"dc=example,dc=com"} \
    ROOT_USER_DN=${ROOT_USER_DN:-"cn=Directory Manager"} \
    ROOT_PASSWORD=${ROOT_PASSWORD:-"password"} \
@@ -32,12 +33,11 @@
 && chmod -R g=u /opt/opendj
COPY --chown=$OPENDJ_USER:$OPENDJ_USER bootstrap/ /opt/opendj/bootstrap/
COPY --chown=$OPENDJ_USER:$OPENDJ_USER run.sh /opt/opendj/run.sh
RUN chmod +x /opt/opendj/run.sh /opt/opendj/bootstrap/setup.sh /opt/opendj/bootstrap/replicate.sh
EXPOSE $PORT $LDAPS_PORT 4444
EXPOSE $PORT $LDAPS_PORT $ADMIN_PORT
USER $OPENDJ_USER
opendj-packages/opendj-docker/Dockerfile-alpine
@@ -5,6 +5,7 @@
ENV ADD_BASE_ENTRY="--addBaseEntry" \
    PORT=1389 \
    LDAPS_PORT=1636 \
    ADMIN_PORT=4444 \
    BASE_DN=${BASE_DN:-"dc=example,dc=com"} \
    ROOT_USER_DN=${ROOT_USER_DN:-"cn=Directory Manager"} \
    ROOT_PASSWORD=${ROOT_PASSWORD:-"password"} \
@@ -32,12 +33,11 @@
 && chmod -R g=u /opt/opendj
COPY --chown=$OPENDJ_USER:$OPENDJ_USER bootstrap/ /opt/opendj/bootstrap/
COPY --chown=$OPENDJ_USER:$OPENDJ_USER run.sh /opt/opendj/run.sh
RUN chmod +x /opt/opendj/run.sh /opt/opendj/bootstrap/setup.sh /opt/opendj/bootstrap/replicate.sh
EXPOSE $PORT $LDAPS_PORT 4444
EXPOSE $PORT $LDAPS_PORT $ADMIN_PORT
USER $OPENDJ_USER
opendj-packages/opendj-docker/bootstrap/replicate.sh
@@ -6,7 +6,7 @@
# The hostname has to be a fully resolvable DNS name in the cluster
# If the service is called
MYHOSTNAME=${MYHOSTNAME:-`hostname -f`}
MYHOSTNAME=${MYHOSTNAME:-$(hostname -f)}
export PATH=/opt/opendj/bin:$PATH
echo "Setting up replication from $MYHOSTNAME to $MASTER_SERVER"
@@ -31,12 +31,16 @@
if [ "$OPENDJ_REPLICATION_TYPE" == "simple" ]; then
  echo "Enabling Standard Replication..."
  /opt/opendj/bin/dsreplication enable --host1 $MASTER_SERVER --port1 4444 \
  /opt/opendj/bin/dsreplication \
    enable \
    --host1 $MASTER_SERVER \
    --port1 4444 \
    --bindDN1 "$ROOT_USER_DN" \
    --bindPassword1 $ROOT_PASSWORD --replicationPort1 8989 \
    --host2 $MYHOSTNAME --port2 4444 --bindDN2 "$ROOT_USER_DN" \
    --bindPassword2 $ROOT_PASSWORD --replicationPort2 8989 \
    --adminUID admin --adminPassword $ROOT_PASSWORD --baseDN $BASE_DN -X -n
    --adminUID admin --adminPassword $ROOT_PASSWORD \
    --baseDN $BASE_DN -X -n
  echo "initializing replication"
@@ -64,7 +68,7 @@
   --replicationPort2 8989 \
   --onlyReplicationServer2 \
   --trustAll \
   --no-prompt;
    --no-prompt
  echo "initializing replication"
@@ -138,5 +142,5 @@
    --no-prompt
else
  echo "Unknown replication type, skiping replication..."
  echo "Unknown replication type, skipping replication..."
fi
opendj-packages/opendj-docker/bootstrap/setup.sh
@@ -5,9 +5,39 @@
# If any optional LDIF files are present load them
/opt/opendj/setup --cli -p $PORT --ldapsPort $LDAPS_PORT --enableStartTLS $OPENDJ_SSL_OPTIONS \
  --baseDN $BASE_DN -h localhost --rootUserDN "$ROOT_USER_DN" --rootUserPassword "$ROOT_PASSWORD" \
  --acceptLicense --no-prompt  $ADD_BASE_ENTRY #--sampleData 1
/opt/opendj/setup \
  --cli \
  -h localhost \
  --baseDN $BASE_DN \
  --ldapPort $PORT \
  --ldapsPort $LDAPS_PORT \
  --enableStartTLS $OPENDJ_SSL_OPTIONS \
  --adminConnectorPort $ADMIN_PORT \
  --rootUserDN "$ROOT_USER_DN" \
  --rootUserPassword "$ROOT_PASSWORD" \
  --acceptLicense \
  --no-prompt \
  --noPropertiesFile \
  --doNotStart \
  $ADD_BASE_ENTRY #--sampleData 1
# There are multiple types of ldif files.
# This step makes plain copies.
# See below for imports via `ldapmodify`.
if [ -d /opt/opendj/bootstrap/config/schema/ ]; then
  echo "Copying schema:"
  for file in /opt/opendj/bootstrap/config/schema/*; do
    target_file="/opt/opendj/config/schema/$(basename -- $file)"
    echo "Copying $file to $target_file"
    cp $file $target_file
  done
fi
/opt/opendj/bin/start-ds
# There are multiple types of ldif files.
# The steps below import ldifs via `ldapmodify`.
# See above for plain copying of ldif files.
if [ -d /opt/opendj/bootstrap/schema/ ]; then
  echo "Loading initial schema:"
opendj-packages/opendj-docker/run.sh
@@ -7,10 +7,9 @@
# For Docker - mount a data volume on /opt/opendj/data
# For Kubernetes mount a PV
cd /opt/opendj
#if defaul data folder exists do not change it
#if default data folder exists do not change it
if [ ! -d ./db ] ; then
  echo "/opt/opendj/data" > /opt/opendj/instance.loc  && \
    mkdir -p /opt/opendj/data/lib/extensions
@@ -18,18 +17,15 @@
# Instance dir does not exist? Then we need to run setup
if [ ! -d ./data/config ] ; then
  echo "Instance data Directory is empty. Creating new DJ instance"
  BOOTSTRAP=${BOOTSTRAP:-/opt/opendj/bootstrap/setup.sh}
  export BASE_DN=${BASE_DN:-"dc=example,dc=com"}
  echo "BASE DN is ${BASE_DN}"
  export PASSWORD=${ROOT_PASSWORD:-password}
   echo "Password set to $PASSWORD"
  BOOTSTRAP=${BOOTSTRAP:-/opt/opendj/bootstrap/setup.sh}
   echo "Running $BOOTSTRAP"
   sh "${BOOTSTRAP}"