ldapdock/dockerfile
2025-11-04 14:49:32 -05:00

47 lines
1.8 KiB
Plaintext

FROM ubuntu:22.04
# set non-interactive TERM for docker
ENV DEBIAN_FRONTEND=noninteractive
# install slapd and ldap-utils
RUN apt-get update && apt-get install -y --no-install-recommends \
slapd ldap-utils gnutls-bin ssl-cert ca-certificates schema2ldif vim mc && apt-get clean
# preconfigure slapd installation without using systemd
RUN echo "slapd slapd/password1 password admin" | debconf-set-selections && \
echo "slapd slapd/password2 password admin" | debconf-set-selections && \
echo "slapd slapd/domain string example.com" | debconf-set-selections && \
echo "slapd slapd/no_configuration boolean false" | debconf-set-selections && \
echo "slapd slapd/purge_database boolean true" | debconf-set-selections && \
echo "slapd slapd/move_old_database boolean true" | debconf-set-selections
# make use of debconf-set-selections
RUN dpkg-reconfigure -f noninteractive slapd
# create a script to automatically start slapd while this dockerfile is being parsed
COPY ./start-slapd.sh ./start-slapd.sh
RUN chmod +x ./start-slapd.sh
# open up LDAP simple port
EXPOSE 636
# set salvable volumes for LDAP data, configuration
#VOLUME ["/var/lib/ldap", "/etc/ldap/slapd.d"]
# set correct permissions for openldap user
RUN chown -R openldap:openldap /var/lib/ldap /etc/ldap/slapd.d
# ENTRYPOINT ensures this sh file ALWAYS runs first before any CMD or command line instruction
ENTRYPOINT ["./entrypoint.sh"]
# CMD provides the default command (/bin/bash) which is passed as an argument to the ENTRYPOINT script
CMD ["/bin/bash"]
### optional use ###
# start slapd
#CMD ["slapd", "-h", "ldap:/// ldapi:///", "-g", "openldap", "-u", "openldap", "-F", "/etc/ldap/slapd.d"]
#
# set entrypoint
#ENTRYPOINT ["/entrypoint.sh"]
#CMD ["bash"]
# run img container with 'docker run -i -t -v ldap_data:/var/lib/ldap -v ldap_config:/etc/ldap/slapd.d ldapdock' for interactive shell