Skip to content

🙋 问题交流。。。 | 使用2025-09-29版本的yaml配置启动报错 #405

@liwenhua5156

Description

@liwenhua5156

Question Report

请在提交问题之前回答这些问题,谢谢。 | Please answer these questions before submitting them. Thank you.

你使用了哪个版本? | Which version did you use?

日期是2025-09-19,具体哪个版本我也不清楚

预期行为 | Expected behavior

我想通过https://github.com/opsre/go-ldap-admin/blob/main/docs/docker-compose/docker-compose.yaml,这个yaml直接拉起docker-compose报错,我按照https://ldapdoc.eryajf.net/pages/adb742/修改了yaml文件

因为你页面写了如下内容:
切切注意
2024-10-19 更新:
不再需要下边复杂的配置,只需要更改docker-compose.yaml文件中所有 eryajf.net 为 liql.com 即可。

实际行为 | Actual behavior

我的yaml文件(我只是将eryajf批量替换成了abc,这个网页上直接ctrl+f搜索abc就能看到我所有的修改,其他内容完全没改)

# 更多部署方式详见:http://ldapdoc.abc.net/pages/f081dc/
networks:
  go-ldap-admin:
    driver: bridge

services:
  go-ldap-admin:
    image: docker.cnb.cool/opsre/go-ldap-admin
    container_name: go-ldap-admin
    hostname: go-ldap-admin
    restart: always
    environment:
      WAIT_HOSTS: openldap:389
    configs:
      - source: go_ldap_admin_config
        target: /app/config.yml
    ports:
      - 8888:8888
    volumes:
      - ./data/go-ldap-admin:/app/data
    depends_on:
      - openldap
    links:
      - openldap:go-ldap-admin-openldap
    networks:
      - go-ldap-admin

  openldap:
    image: docker.cnb.cool/znb/images/openldap:1.4.1
    container_name: go-ldap-admin-openldap
    hostname: go-ldap-admin-openldap
    restart: always
    environment:
      TZ: Asia/Shanghai
      LDAP_ORGANISATION: "abc.net"
      LDAP_DOMAIN: "abc.net"
      LDAP_ADMIN_PASSWORD: "123456"
    command: [ '--copy-service' ]
    volumes:
      - ./data/openldap/database:/var/lib/ldap
      - ./data/openldap/config:/etc/ldap/slapd.d
    ports:
      - 389:389
    networks:
      - go-ldap-admin

  # 按需启用
  # phpldapadmin:
  #   image: docker.cnb.cool/znb/images/phpldapadmin:0.9.0
  #   container_name: go-ldap-admin-phpldapadmin
  #   hostname: go-ldap-admin-phpldapadmin
  #   restart: always
  #   environment:
  #     TZ: Asia/Shanghai
  #     PHPLDAPADMIN_HTTPS: "false"
  #     PHPLDAPADMIN_LDAP_HOSTS: go-ldap-admin-openldap
  #   ports:
  #     - 8091:80
  #   volumes:
  #     - ./data/phpadmin:/var/www/phpldapadmin
  #   depends_on:
  #     - openldap
  #   links:
  #     - openldap:go-ldap-admin-openldap
  #   networks:
  #     - go-ldap-admin

configs:
  go_ldap_admin_config:
    content: |
      # delelopment
      system:
        # 设定模式(debug/release/test,正式版改为release)
        mode: debug
        # url前缀
        url-path-prefix: api
        # 程序监听端口
        port: 8888
        # 是否初始化数据(没有初始数据时使用, 已发布正式版改为false)
        init-data: true
      logs:
        # 日志等级(-1:Debug, 0:Info, 1:Warn, 2:Error, 3:DPanic, 4:Panic, 5:Fatal, -1<=level<=5, 参照zap.level源码)
        level: -1
        # 日志路径
        path: data/logs
        # 文件最大大小, M
        max-size: 50
        # 备份数
        max-backups: 100
        # 存放时间, 天
        max-age: 30
        # 是否压缩
        compress: false
      database:
        # 数据库类型 mysql sqlite3
        driver: sqlite3
        # 数据库连接sqlite3数据文件的路径
        source: data/go-ldap-admin.db
      mysql:
        # 用户名
        username: root
        # 密码
        password: 123456
        # 数据库名
        database: go_ldap_admin
        # 主机地址
        host: localhost
        # 端口
        port: 3306
        # 连接字符串参数
        query: parseTime=True&loc=Local&timeout=10000ms
        # 是否打印日志
        log-mode: true
        # 数据库表前缀(无需再末尾添加下划线, 程序内部自动处理)
        table-prefix: tb
        # 编码方式
        charset: utf8mb4
        # 字符集(utf8mb4_general_ci速度比utf8mb4_unicode_ci快些)
        collation: utf8mb4_general_ci
      # jwt配置
      jwt:
        # jwt标识
        realm: test jwt
        # 服务端密钥
        key: secret key
        # token过期时间, 小时
        timeout: 12000
        # 刷新token最大过期时间, 小时
        max-refresh: 12000
      # 令牌桶限流配置
      rate-limit:
        # 填充一个令牌需要的时间间隔,毫秒
        fill-interval: 50
        # 桶容量
        capacity: 200
      # email configuration
      email:
        port: '465'
        user: 'abc@163.com'
        from: 'go-ldap-admin后台'
        host: 'smtp.163.com'
        # is-ssl: true
        pass: 'your password'
      # # ldap 配置
      ldap:
        # ldap服务器地址
        url: ldap://openldap:389
        # ladp最大连接数设置
        max-conn: 10
        # ldap服务器基础DN
        base-dn: "dc=abc,dc=net"
        # ldap管理员DN
        admin-dn: "cn=admin,dc=abc,dc=net"
        # ldap管理员密码
        admin-pass: "123456"
        # ldap用户OU
        user-dn: "ou=people,dc=abc,dc=net"
        # ldap用户初始默认密码
        user-init-password: "123456"
        # 是否允许更改分组DN
        group-name-modify: false
        # 是否允许更改用户DN
        user-name-modify: false
        # 用户密码加密方式 默认为 ssha 还可指定为 clear(表示不加密)
        user-password-encryption-type: "ssha"
        # 默认邮箱后缀
        default-email-suffix: "abc.net"
      # 📢 即便用不到如下三段配置信息,也不要删除,否则会有一些奇怪的错误出现
      dingtalk:
        # 配置获取详细文档参考: http://ldapdoc.abc.net/pages/94f43a/
        flag: "dingtalk" # 作为钉钉在平台的标识
        app-key: "xxxxxxxxxxxxxxx" # 应用的key
        app-secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxx" # 应用的secret
        agent-id: "12121212" # 目前agent-id未使用到,可忽略
        enable-sync: false  # 是否开启定时同步钉钉的任务
        dept-sync-time: "0 30 2 * * *" # 部门同步任务的时间点 * * * * * * 秒 分 时 日 月 周, 请把时间设置在凌晨 1 ~ 5 点
        user-sync-time: "0 30 3 * * *" # 用户同步任务的时间点 * * * * * * 秒 分 时 日 月 周, 请把时间设置在凌晨 1 ~ 5 点,注意请把用户同步的任务滞后于部门同步时间,比如部门为2点,则用户为3点
        dept-list:    # 配置要同步的部门列表,配置留空则同步所有部门,在开头加^表示不同步此部门
          #- "48456726"   # 需要同步的部门ID
          #- "^61213417"  # 不需要同步的部门ID
        is-update-syncd: false # 当钉钉用户的邮箱,手机号,部门等信息更新之后,是否同步更新,默认为false,如果你不了解这个字段的含义,则不建议开启
        user-leave-range: 0 #按配置天数查离职时间范围内的用户,为0时不限制
      wecom:
        # 配置获取详细文档参考:http://ldapdoc.abc.net/pages/cf1698/
        flag: "wecom" # 作为微信在平台的标识
        corp-id: "xxxx" # 企业微信企业ID
        agent-id: 1000003 # 企业微信中创建的应用ID
        corp-secret: "xxxxx" # 企业微信中创建的应用secret
        enable-sync: false # 是否开启定时同步企业微信的任务
        dept-sync-time: "0 30 2 * * *" # 部门同步任务的时间点 * * * * * * 秒 分 时 日 月 周, 请把时间设置在凌晨 1 ~ 5 点
        user-sync-time: "0 30 3 * * *" # 用户同步任务的时间点 * * * * * * 秒 分 时 日 月 周, 请把时间设置在凌晨 1 ~ 5 点,注意请把用户同步的任务滞后于部门同步时间,比如部门为2点,则用户为3点
        is-update-syncd: false # 当企微用户的邮箱,手机号,部门等信息更新之后,是否同步更新,默认为false,如果你不了解这个字段的含义,则不建议开启
      feishu:
        # 配置获取详细文档参考:http://ldapdoc.abc.net/pages/83c90b/
        flag: "feishu" # 作为飞书在平台的标识
        app-id: "xxxxxxx" # 飞书的app-id
        app-secret: "xxxxxxxxxxx" # 飞书的app-secret
        enable-sync: false  # 是否开启定时同步飞书的任务
        dept-sync-time: "0 20 0 * * *" # 部门同步任务的时间点 * * * * * * 秒 分 时 日 月 周, 请把时间设置在凌晨 1 ~ 5 点
        user-sync-time: "0 40 0 * * *" # 用户同步任务的时间点 * * * * * * 秒 分 时 日 月 周, 请把时间设置在凌晨 1 ~ 5 点,注意请把用户同步的任务滞后于部门同步时间,比如部门为2点,则用户为3点
        dept-list:    # 配置要同步的部门列表,配置留空则同步所有部门,在开头加^表示不同步此部门
          #- "48456726"   # 需要同步的部门ID
          #- "^61213417"  # 不需要同步的部门ID
        is-update-syncd: false # 当飞书用户的邮箱,手机号,部门等信息更新之后,是否同步更新,默认为false,如果你不了解这个字段的含义,则不建议开启

拉起后openldap一直在重启,报错如下:

*** CONTAINER_LOG_LEVEL = 3 (info)
*** Copy /container/service to /container/run/service
*** Search service in CONTAINER_SERVICE_DIR = /container/run/service :
*** link /container/run/service/:ssl-tools/startup.sh to /container/run/startup/:ssl-tools
*** link /container/run/service/slapd/startup.sh to /container/run/startup/slapd
*** link /container/run/service/slapd/process.sh to /container/run/process/slapd/run
*** Set environment for startup files
*** Environment files will be proccessed in this order :
Caution: previously defined variables will not be overriden.
/container/environment/99-default/default.startup.yaml
/container/environment/99-default/default.yaml

To see how this files are processed and environment variables values,
run this container with '--loglevel debug'
*** Running /container/run/startup/:ssl-tools...
*** Running /container/run/startup/slapd...
openldap user and group adjustments
get current openldap uid/gid info inside container
-------------------------------------
openldap GID/UID
-------------------------------------
User uid: 911
User gid: 911
uid/gid changed: false
-------------------------------------
updating file uid/gid ownership
No certificate file and certificate key provided, generate:
/container/run/service/slapd/assets/certs/ldap.crt and /container/run/service/slapd/assets/certs/ldap.key
2025/09/29 19:11:40 [INFO] generate received request
2025/09/29 19:11:40 [INFO] received CSR
2025/09/29 19:11:40 [INFO] generating key: ecdsa-384
2025/09/29 19:11:40 [INFO] encoded CSR
2025/09/29 19:11:40 [INFO] signed certificate with serial number 67188463505359869631170546485061268715307986542
Link /container/run/service/:ssl-tools/assets/default-ca/default-ca.pem to /container/run/service/slapd/assets/certs/ca.crt
Start OpenLDAP...
Waiting for OpenLDAP to start...
Add TLS config...
Disable replication config...
*** /container/run/startup/slapd failed with status 49

*** Killing all processes...

我不修改yaml的任何配置,可以拉起成功,但是我要修改basedn,无论改成什么都是这种情况,我把所有的issue都看了,依然无法解决
我承认我的技术比较菜,但还是希望能得到作者的帮助,感谢

原因分析(如果可以) | Cause analysis (if possible)

我理解问题的原因出在这里,我虽然改了yaml的basedn,但是服务端的yaml没变过来,但是我不知道怎么改

问题重现步骤 | Steps to reproduce the problem

使用我提供的yaml文件,然后执行docker compose up -d,再执行docker ps,就看到openldap一直在重启,然后执行docker logs go-ldap-admin-openldap,就能看到我提供的结果了

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions