gpt4 book ai didi

docker-compose - 管理员用户在火箭聊天中失败

转载 作者:行者123 更新时间:2023-12-03 14:44:39 29 4
gpt4 key购买 nike

我一直在云实例上运行 Rocketchat。我使用了以下文档中指定的参数在 Rocketchat 中通过 docker-compose 在 yaml 文件中创建管理员用户。
https://docs.rocket.chat/guides/administrator-guides/create-the-first-admin
我无法创建管理员用户,因为我的变量已正确指定。
docker-compose.yaml

version: '3.8'

services:
rocketchat:
image: rocketchat/rocket.chat:latest
container_name: $ROCKETCHAT_CONTAINER_NAME
command: >
bash -c
"for i in `seq 1 30`; do
node main.js &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 secs...\";
sleep 5;
done; (exit $$s)"
restart: unless-stopped
volumes:
- ./uploads:/app/uploads
depends_on:
- mongo
environment:
- PORT=3000
- ROOT_URL=http://xxxxxxxxx:3000
- MONGO_URL=mongodb://mongo:27017/rocketchat
- MONGO_OPLOG_URL=mongodb://mongo:27017/local
- MAIL_URL=smtp://smtp.email
- ADMIN_USERNAME=admin
- ADMIN_PASS=password
- ADMIN_EMAIL=beulah@xxxxxx.com
ports:
- 3000:$ROCKETCHAT_PORT
labels:
- "traefik.backend=rocketchat"
- "traefik.frontend.rule=Host: your.domain.tld"
networks:
- $ROCKETCHAT_NETWORK

mongo:
image: mongo:$MONGO_IMAGE_TAG
container_name: $MONGO_CONTAINER_NAME
restart: unless-stopped
volumes:
- ./data/db:/data/db
command: mongod --smallfiles --oplogSize 128 --replSet rs0 --storageEngine=mmapv1
env_file: .env
labels:
- "traefik.enable=false"
networks:
- $ROCKETCHAT_NETWORK

mongo-init-replica:
image: mongo:$MONGO_IMAGE_TAG
container_name: $MONGO_REPLICA_CONTAINER_NAME
command: >
bash -c
"for i in `seq 1 30`; do
mongo mongo/rocketchat --eval \"
rs.initiate({
_id: 'rs0',
members: [ { _id: 0, host: 'localhost:27017' } ]})\" &&
s=$$? && break || s=$$?;
echo \"Tried $$i times. Waiting 5 secs...\";
sleep 5;
done; (exit $$s)"
depends_on:
- mongo
env_file: .env
networks:
- $ROCKETCHAT_NETWORK

networks:
rocketchat:

最佳答案

尽管您可能遇到了一个常见的陷阱,但我无法重现该问题。 Tl; dr:如果您在同一目录中的一台机器上多次运行它 - 它很可能是 mongo 的存储。首次设置后,它会创建 ./data保存用户帐户和其他所有内容的目录。如果您创建了 admin 一次,它就不会再经历这个了。
通常,如果您在没有这些变量的情况下运行 Rocket.chat,它允许您通过 Web 界面创建管理员帐户。当您设置环境变量时,它可能会进入这段代码:
程序/服务器/应用程序/app.js :

...
if (process.env.ADMIN_PASS) {
if (_.isEmpty(getUsersInRole('admin').fetch())) {
...
但是正如您所看到的,对任何具有“管理员”角色的用户进行了第二次检查。换句话说,只有在角色中还没有人时才使用环境变量。
如果它确实使用了变量,您将在容器日志中看到如下内容:
Inserting admin user:
Name: Administrator
Email: beulah@nonexistent.domain
Username: admin
如果没有,您将看到如下一行:
Users with admin role already exist; Ignoring environment variables ADMIN_PASS
发生这种情况的最明显原因是您之前使用不同的凭据集运行了撰写文件或通过 Web GUI 注册了一个帐户。在将该管理员用户保存在数据库中之后,该数据库(在您的撰写文件中)保留其数据 容器外 ,所以它在重新启动之间是持久的。如果我之前所说的对您来说是正确的,并且您想从头开始 - 删除 ./data撰写文件所在的目录。它在那里 mongo保存数据。

关于docker-compose - 管理员用户在火箭聊天中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65213651/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com