背景
开发人员一般会用到很多开发软件,例如GIT,SonarQueb,minio,rancher等程序,这么多的程序,每个程序都有自己的一套账户系统和权限肯定是不合适的,作为用户来说,我们肯定是希望同一个账户能在多个软件中登录,就像一个微信号可以玩腾讯的所有游戏。作为管理员来说,肯定是希望前端开发,后端开发,测试人员的权限是分开的,在一个地方修改,所有软件的权限都能同步变更。那我们就采用了ldap的方式来快速部署试试吧。
前提条件
ubuntu系统,安装了docker和docker-compose
架构图
docker-compose.yml内容
创建以下内容的docker-compose.yml 文件,使用docker-compose up -d 命令运行
version: '3' services: ldap-service: image: osixia/openldap:1.5.0 container_name: ldap-service restart: always hostname: ldap.zhenwei.local environment: - LDAP_ORGANISATION=zhenwei.li.Co.,Ltd. - LDAP_DOMAIN=域名.com - LDAP_ADMIN_PASSWORD=超管密码 - LDAP_READONLY_USER=true - LDAP_READONLY_USER_USERNAME=lzwread - LDAP_READONLY_USER_PASSWORD=只读密码 - LDAP_CONFIG_PASSWORD=只读密码 - LDAP_TLS_VERIFY_CLIENT=never networks: server: ports: - "389:389" - "636:636" volumes: - /home/zhenwei/ldap/database:/var/lib/ldap - /home/zhenwei/ldap/config:/etc/ldap/slapd.d ldap-backup: image: osixia/openldap-backup:1.5.0 container_name: ldap-backup restart: always environment: - LDAP_ORGANISATION=zhenwei.li.Co.,Ltd. - LDAP_BACKUP_CONFIG_CRON_EXP="0 2 * * *" - LDAP_DOMAIN=域名.com - LDAP_ADMIN_PASSWORD=超管密码 - LDAP_READONLY_USER=true - LDAP_READONLY_USER_USERNAME=lzwread - LDAP_READONLY_USER_PASSWORD=只读密码 - LDAP_CONFIG_PASSWORD=只读密码 volumes: - /home/zhenwei/ldap/database:/var/lib/ldap - /home/zhenwei/ldap/config:/etc/ldap/slapd.d - /home/zhenwei/ldap/backup:/data/backup networks: server: phpldap-service: image: osixia/phpldapadmin:0.9.0 container_name: phpldap-service restart: always environment: - PHPLDAPADMIN_LDAP_HOSTS=10.80.3.249 - PHPLDAPADMIN_HTTPS=false networks: server: ports: - "3081:80" volumes: - /home/zhenwei/ldap/phpadmin-data:/var/www/phpldapadmin depends_on: - ldap-service ldap-ltb: image: accenture/adop-ldap-ltb:0.1.0 container_name: ldap-ltb restart: always networks: server: ports: - "8095:80" environment: - LDAP_LTB_URL=ldap://ldap-service:389 - LDAP_LTB_BS=dc=zhenwei.li,dc=com - LDAP_LTB_PWD=超管密码 - LDAP_LTB_DN=cn=admin,dc=zhenwei.li,dc=com depends_on: - ldap-service volumes: - /home/zhenwei/ldap/ltb-config:/usr/share/self-service-password/conf networks: server: # external: true