背景
开发人员一般会用到很多开发软件,例如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