You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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,但实际登录后就是找不到对应的数据库和用户。

我现在的核心疑问是:

  1. 为什么脚本明明执行成功了,创建的用户和数据库却不生效?
  2. 这个问题是否和3.12.x版本从之前的企业版切换到现在的社区版有关?

希望有遇到过类似问题或者熟悉ArangoDB版本差异的朋友能帮忙分析一下,非常感谢!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 06:49:32