在试图运行具有由docker管理的授权的MongoDB停靠实例时--机密(使用文件)--受到此博客帖子的启发,我始终遇到以下错误:
2020-07-24T16:25:26.656+0000 E QUERY [js] uncaught exception: Error: couldn't add user: Error preflighting normalization: U_STRINGPREP_PROHIBITED_ERROR :设置
# docker-compose.yml
version: '3.5'
services:
my_db:
image: mongo
command: --auth
environment:
MONGO_INITDB_ROOT_PASSWORD_FILE: /run/secrets/mongodb_root_password
MONGO_INITDB_ROOT_USERNAME_FILE: /run/secrets/mongodb_root_username
secrets:
- mongodb_root_password
- mongodb_root_username
secrets:
mongodb_root_password:
- file: mongodb/.mongodb_root_password
mongodb_root_username:
- file: mongodb/.mongodb_root_username$ docker stack deploy --compose-file=docker-compose.yml my_db_stack问题
不幸的是,容器一直在死去。在日志中,我找到了上面提到的错误。
发布于 2020-07-24 17:18:16
事实证明,这个问题是由Windows样式的行结束在mongodb/.mongodb_root_password和mongodb/.mongodb_root_username文件中造成的。这些文件是在Windows主机上创建的,然后(我猜想)被盲目地复制到容器中。
解决方案
使用notepad++,我将行尾转换为Unix样式,从而解决了这个问题。
为了切换行尾,我在Notepad++上右击了下面图像中显示的底部栏的突出显示部分。

https://stackoverflow.com/questions/63078470
复制相似问题