diff --git a/Documentation/connectors/ldap.md b/Documentation/connectors/ldap.md
index e69c300539d464b76f4f3a64468c292e9c4ebdad..5c74a319c684e4c4a88547a30c76307138b92175 100644
--- a/Documentation/connectors/ldap.md
+++ b/Documentation/connectors/ldap.md
@@ -13,16 +13,17 @@ The connector executes two primary queries:
 
 The dex repo contains a basic LDAP setup using [OpenLDAP][openldap].
 
-First start the LDAP server using the example script. This will run the OpenLDAP daemon and seed it with an initial set of users.
+First start the LDAP server using docker-compose. This will run the OpenLDAP daemon in a Docker container, and seed it with an initial set of users.
 
 ```
-./scripts/slapd.sh
+cd examples/ldap
+docker-compose up
 ```
 
-This script sets the LDAP daemon to debug mode, and is expected to print several error messages which are normal. Once the server is up, run dex.
+This container is expected to print several warning messages which are normal. Once the server is up, run dex in another terminal.
 
 ```
-./bin/dex serve examples/config-ldap.yaml
+./bin/dex serve examples/ldap/config-ldap.yaml
 ```
 
 Then run the OAuth client in another terminal.
diff --git a/examples/config-ldap.ldif b/examples/ldap/config-ldap.ldif
similarity index 80%
rename from examples/config-ldap.ldif
rename to examples/ldap/config-ldap.ldif
index 55cc81f99768891e5ff4e64a38c82e6f9e375972..8840bf8005efae4df7450247ff05e2e1f3fb1802 100644
--- a/examples/config-ldap.ldif
+++ b/examples/ldap/config-ldap.ldif
@@ -1,8 +1,10 @@
-dn: dc=example,dc=org
-objectClass: dcObject
-objectClass: organization
-o: Example Company
-dc: example
+# Already included in default config of Docker image osixia/openldap:1.4.0.
+#
+# dn: dc=example,dc=org
+# objectClass: dcObject
+# objectClass: organization
+# o: Example Company
+# dc: example
 
 dn: ou=People,dc=example,dc=org
 objectClass: organizationalUnit
diff --git a/examples/config-ldap.yaml b/examples/ldap/config-ldap.yaml
similarity index 97%
rename from examples/config-ldap.yaml
rename to examples/ldap/config-ldap.yaml
index 05265b4b36834e2090b71330419581307df88077..f35465adbc40084135de888bac6178c3c219cdcb 100644
--- a/examples/config-ldap.yaml
+++ b/examples/ldap/config-ldap.yaml
@@ -11,7 +11,7 @@ connectors:
   name: OpenLDAP
   id: ldap
   config:
-    host: localhost:10389
+    host: localhost:389
 
     # No TLS for this setup.
     insecureNoSSL: true
diff --git a/examples/ldap/docker-compose.yaml b/examples/ldap/docker-compose.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..73ae5ebd00e2c32f06053393dcd707dd68498b7a
--- /dev/null
+++ b/examples/ldap/docker-compose.yaml
@@ -0,0 +1,16 @@
+version: "3"
+
+services:
+  ldap:
+    image: osixia/openldap:1.4.0
+    # Copying is required because the entrypoint modifies the *.ldif files.
+    # For verbose output, use:  command: ["--copy-service", "--loglevel", "debug"]
+    command: ["--copy-service"]
+    # https://github.com/osixia/docker-openldap#seed-ldap-database-with-ldif
+    # Option 1: Add custom seed file -> mount to         /container/service/slapd/assets/config/bootstrap/ldif/custom/
+    # Option 2: Overwrite default seed file -> mount to  /container/service/slapd/assets/config/bootstrap/ldif/
+    volumes:
+    - ./config-ldap.ldif:/container/service/slapd/assets/config/bootstrap/ldif/custom/config-ldap.ldif
+    ports:
+    - 389:389
+    - 636:636