ArangoDB 3.12.x版本Docker环境下初始化脚本执行成功但未创建用户和数据库的问题咨询
ArangoDB 3.12.x版本Docker环境下初始化脚本执行成功但未创建用户和数据库的问题咨询
大家好,我遇到了一个棘手的ArangoDB Docker部署问题,想请教一下社区的各位:
最近我在Docker环境部署ArangoDB时发现了一个奇怪的现象:
- 当使用3.12.x系列版本(包括
latest、3.12.5.2、3.12、3.12.5这些镜像标签)时,初始化脚本确实会在容器启动时执行(从日志能看到完整的成功输出),但登录ArangoDB后却找不到脚本里应该创建的用户和数据库; - 但切换到3.11.14版本时,完全相同的配置和脚本就能正常工作,用户和数据库都能被正确创建出来;
- 补充一下:之前我使用
3.12.4-3版本时也是正常的,但这个版本现在已经从Docker Hub上下架了,而且那个版本用的是企业版的界面,现在的3.12.x版本都是社区版界面,我怀疑是不是这个社区版/企业版的变化导致了问题?
以下是我的相关配置和日志:
Docker Compose配置
services: arangodb: image: arangodb:latest container_name: arangodb environment: - ARANGO_ROOT_PASSWORD=${ARANGO_ROOT_PASSWORD} - ARANGO_DB=${ARANGO_DB} - ARANGO_USER=${ARANGO_USER} - ARANGO_USER_PASSWORD=${ARANGO_USER_PASSWORD} ports: - "${ARANGO_PORT}:8529" volumes: - arangodb_data:/var/lib/arangodb3 - arangodb_apps:/var/lib/arangodb3-apps - ./arangodb-init:/docker-entrypoint-initdb.d restart: unless-stopped volumes: arangodb_data: arangodb_apps:
说明:.env文件里的所有变量都已经正确配置,没有缺失。
初始化脚本(放在./arangodb-init目录下,挂载到/docker-entrypoint-initdb.d)
'use strict'; const dbName = require('internal').env['ARANGO_DB'] || 'databasename'; const username = require('internal').env['ARANGO_USER'] || 'myuser'; const password = require('internal').env['ARANGO_USER_PASSWORD'] || 'myuserpass'; const db = require('@arangodb').db; const users = require('@arangodb/users'); if (!db._databases().includes(dbName)) { db._createDatabase(dbName); console.log(`Database ${dbName} created.`); } users.save(username, password, true); users.grantDatabase(username, dbName, 'rw'); console.log(`User ${username} created and granted access to ${dbName}`); console.log("Databases at init end:", db._databases());
容器启动日志(关键部分)
Attaching to arangodb arangodb | Initializing database...Hang on... arangodb | /entrypoint.sh: running /docker-entrypoint-initdb.d/init-user.js arangodb | 2025-08-14T20:08:01.033895Z [119-1] INFO [99d80] {general} Database databasename created. arangodb | 2025-08-14T20:08:01.047226Z [119-1] INFO [99d80] {general} User webservice created. arangodb | 2025-08-14T20:08:01.047610Z [119-1] INFO [99d80] {general} User webservice granted access to databasename arangodb | 2025-08-14T20:08:01.048110Z [119-1] INFO [99d80] {general} Databases at init end: [ "_system", "databasename" ] arangodb | Database initialized...Starting System... ... arangodb | 2025-08-14T20:08:02.766179Z [1-1] INFO [cf3f4] {general} ArangoDB (version 3.12.5-2 enterprise [linux]) is ready for business. Have fun!
从日志里能清楚看到脚本的每一步都执行了,输出的数据库列表里也有我创建的databasename,但实际登录后就是找不到对应的数据库和用户。
我现在的核心疑问是:
- 为什么脚本明明执行成功了,创建的用户和数据库却不生效?
- 这个问题是否和3.12.x版本从之前的企业版切换到现在的社区版有关?
希望有遇到过类似问题或者熟悉ArangoDB版本差异的朋友能帮忙分析一下,非常感谢!
内容来源于stack exchange
相关产品推荐
相关产品推荐

