Skip to content

Commit a175482

Browse files
authored
Support to create database from entrypoint (#5)
* Moved creation of the initial database to the entrypoint that checks the `DB_CONFIG` file existence as the condition to init the database * Remove needs of `/usr/local/etc/openldap` volume * Updated README.md
1 parent 9277195 commit a175482

File tree

6 files changed

+42
-21
lines changed

6 files changed

+42
-21
lines changed

Dockerfile

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,6 @@ FROM ubuntu:16.04
22

33
LABEL maintainer="Jorge Arias <[email protected]>"
44

5-
ARG LDAP_DN_BASE=dc=my-domain,dc=com
6-
ARG LDAP_ORGANIZATION=Example
7-
ARG LDAP_ROOT_DN=cn=Manager,dc=my-domain,dc=com
8-
ARG LDAP_DATABASE=hdb
9-
ARG LDAP_ROOT_PW=secret
10-
115
ENV OPENLDAP_VERSION 2.4.47
126

137
RUN apt-get update && apt-get install -y \
@@ -25,7 +19,7 @@ RUN sed -i 's/MECHANISMS="pam"/MECHANISMS="ldap"/' /etc/default/saslauthd \
2519
&& echo "pwcheck_method: saslauthd" >> /usr/lib/sasl2/slapd.conf \
2620
&& echo "saslauthd_path: /var/run/saslauthd/mux" >> /usr/lib/sasl2/slapd.conf
2721

28-
COPY saslauthd.conf /etc/saslauthd.conf
22+
COPY assets/saslauthd.conf /etc/saslauthd.conf
2923

3024
RUN curl -LJO http://mirror.eu.oneandone.net/software/openldap/openldap-release/openldap-${OPENLDAP_VERSION}.tgz \
3125
&& gunzip -c openldap-${OPENLDAP_VERSION}.tgz | tar xf - \
@@ -39,27 +33,18 @@ RUN ./configure --enable-spasswd --with-cyrus-sasl --enable-memberof \
3933
&& make install \
4034
&& make clean
4135

42-
RUN touch /usr/local/etc/openldap/create.ldif \
43-
cp /usr/local/var/openldap-data/DB_CONFIG.example /usr/local/var/openldap-data/DB_CONFIG
44-
45-
COPY slapd.conf /usr/local/etc/openldap/slapd.conf
46-
RUN sed -i -E 's/^(suffix[[:blank:]]*).*/\1"'"$LDAP_DN_BASE"'"/' /usr/local/etc/openldap/slapd.conf \
47-
&& sed -i -E 's/^(rootdn[[:blank:]]*).*/\1"'"$LDAP_ROOT_DN"'"/' /usr/local/etc/openldap/slapd.conf \
48-
&& sed -i -E 's/^(database[[:blank:]]*).*/\1'"$LDAP_DATABASE"'/' /usr/local/etc/openldap/slapd.conf \
49-
&& sed -i -E 's/^(rootpw[[:blank:]]*).*/\1'"$LDAP_ROOT_PW"'/' /usr/local/etc/openldap/slapd.conf
50-
51-
COPY create.ldif /usr/local/etc/openldap/create.ldif
36+
RUN mkdir /opt/openldap-init \
37+
&& cp /usr/local/var/openldap-data/DB_CONFIG.example /opt/openldap-init/
5238

53-
RUN sed -i -E 's/^(dn:[[:blank:]]*).*/\1'"$LDAP_DN_BASE"'/' /usr/local/etc/openldap/create.ldif \
54-
&& sed -i -E 's/^(o:[[:blank:]]*).*/\1'"$LDAP_ORGANIZATION"'/' /usr/local/etc/openldap/create.ldif
39+
COPY assets/slapd.conf /opt/openldap-init/slapd.conf
5540

56-
RUN slapadd -l /usr/local/etc/openldap/create.ldif
41+
COPY assets/create.ldif /opt/openldap-init/create.ldif
5742

5843
WORKDIR /
5944

6045
EXPOSE 389
6146

62-
VOLUME ["/usr/local/etc/openldap", "/usr/local/var/openldap-data"]
47+
VOLUME ["/usr/local/var/openldap-data"]
6348

6449
COPY docker-entrypoint.sh /sbin/docker-entrypoint.sh
6550

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ docker build -t openldap \
1313
## Running with SASL configuration
1414
```
1515
docker run -d --name openldap -p 389:389 \
16+
-e LDAP_DN_BASE=dc=my-domain,dc=com \
17+
-e LDAP_ORGANIZATION=Example \
18+
-e LDAP_ROOT_DN=cn=Manager,dc=my-domain,dc=com \
19+
-e LDAP_DATABASE=hdb \
20+
-e LDAP_ROOT_PW=secret \
1621
-e LDAP_SERVERS='ldap://ad.example.com:389/' \
1722
-e LDAP_SEARCH_BASE='CN=DomainUsers,DC=example,DC=com' \
1823
-e LDAP_TIMEOUT=10 \
@@ -25,6 +30,11 @@ openldap
2530
## Using volumes
2631
```
2732
docker run -d --name openldap -p 389:389 \
33+
-e LDAP_DN_BASE=dc=my-domain,dc=com \
34+
-e LDAP_ORGANIZATION=Example \
35+
-e LDAP_ROOT_DN=cn=Manager,dc=my-domain,dc=com \
36+
-e LDAP_DATABASE=hdb \
37+
-e LDAP_ROOT_PW=secret \
2838
-e LDAP_SERVERS='ldap://ad.example.com:389/' \
2939
-e LDAP_SEARCH_BASE='CN=DomainUsers,DC=example,DC=com' \
3040
-e LDAP_TIMEOUT=10 \
File renamed without changes.
File renamed without changes.
File renamed without changes.

docker-entrypoint.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,44 @@
11
#!/bin/bash
22

3+
LDAP_DN_BASE=${LDAP_DN_BASE:-'dc=my-domain,dc=com'}
4+
LDAP_ORGANIZATION=${LDAP_ORGANIZATION:-'Example'}
5+
LDAP_ROOT_DN=${LDAP_ROOT_DN:-'cn=Manager,dc=my-domain,dc=com'}
6+
LDAP_DATABASE=${LDAP_DATABASE:-'hdb'}
7+
LDAP_ROOT_PW=${LDAP_ROOT_PW:-'secret'}
8+
39
LDAP_SERVERS=${LDAP_SERVERS:-'ldap://ad.example.com:389/'}
410
LDAP_SEARCH_BASE=${LDAP_SEARCH_BASE:-'CN=DomainUsers,DC=example,DC=com'}
511
LDAP_TIMEOUT=${LDAP_TIMEOUT:-'10'}
612
LDAP_FILTER=${LDAP_FILTER:-'(sAMAccountName=%U)'}
713
LDAP_BIND_DN=${LDAP_BIND_DN:-'CN=Administrator,CN=Users,DC=example,DC=com'}
814
LDAP_PASSWORD=${LDAP_PASSWORD:-'ADpassword'}
915

16+
cp /opt/openldap-init/slapd.conf /usr/local/etc/openldap/slapd.conf
17+
18+
sed -i -E 's/^(suffix[[:blank:]]*).*/\1"'"$LDAP_DN_BASE"'"/' /usr/local/etc/openldap/slapd.conf \
19+
&& sed -i -E 's/^(rootdn[[:blank:]]*).*/\1"'"$LDAP_ROOT_DN"'"/' /usr/local/etc/openldap/slapd.conf \
20+
&& sed -i -E 's/^(database[[:blank:]]*).*/\1'"$LDAP_DATABASE"'/' /usr/local/etc/openldap/slapd.conf \
21+
&& sed -i -E 's/^(rootpw[[:blank:]]*).*/\1'"$LDAP_ROOT_PW"'/' /usr/local/etc/openldap/slapd.conf
22+
1023
sed -i -E 's|^(ldap_servers:[[:blank:]]*).*|\1'"$LDAP_SERVERS"'|' /etc/saslauthd.conf \
1124
&& sed -i -E 's/^(ldap_search_base:[[:blank:]]*).*/\1'"$LDAP_SEARCH_BASE"'/' /etc/saslauthd.conf \
1225
&& sed -i -E 's/^(ldap_timeout:[[:blank:]]*).*/\1'"$LDAP_TIMEOUT"'/' /etc/saslauthd.conf \
1326
&& sed -i -E 's/^(ldap_filter:[[:blank:]]*).*/\1'"$LDAP_FILTER"'/' /etc/saslauthd.conf \
1427
&& sed -i -E 's/^(ldap_bind_dn:[[:blank:]]*).*/\1'"$LDAP_BIND_DN"'/' /etc/saslauthd.conf \
1528
&& sed -i -E 's/^(ldap_password:[[:blank:]]*).*/\1'"$LDAP_PASSWORD"'/' /etc/saslauthd.conf
1629

30+
# If initial configuration and database does not exists in volumes
31+
slaptest -f /usr/local/var/openldap-data/DB_CONFIG
32+
if [ $? != 0 ]
33+
then
34+
echo "Creating initial database..."
35+
cp /opt/openldap-init/DB_CONFIG.example /usr/local/var/openldap-data/DB_CONFIG
36+
37+
sed -i -E 's/^(dn:[[:blank:]]*).*/\1'"$LDAP_DN_BASE"'/' /opt/openldap-init/create.ldif \
38+
&& sed -i -E 's/^(o:[[:blank:]]*).*/\1'"$LDAP_ORGANIZATION"'/' /opt/openldap-init/create.ldif
39+
40+
slapadd -l /opt/openldap-init/create.ldif
41+
fi
42+
1743
service saslauthd start
1844
/usr/local/libexec/slapd -d 1024

0 commit comments

Comments
 (0)