ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

把配置文件交给环境变量:docker-minecraft-server 动态修改配置的完整实战

把配置文件交给环境变量:docker-minecraft-server 动态修改配置的完整实战 把配置文件交给环境变量docker-minecraft-server 动态修改配置的完整实战【免费下载链接】docker-minecraft-serverDocker image that provides a Minecraft Server for Java Edition that automatically installs/upgrades versions, modloaders, modpacks and more at startup项目地址: https://gitcode.com/GitHub_Trending/do/docker-minecraft-serverdocker-minecraft-server 是一个启动时自动装好指定版本 Minecraft 服务器的 Docker 镜像。它内置了一套环境变量替换机制能让你在容器启动那一刻动态修改 /data 下的配置文件。读完这篇你能把数据库地址、插件参数这类只有部署时才确定的值全部挪出镜像和 Git 仓库写进 compose 就生效。启动时谁在扫文件docker-minecraft-server 环境变量替换机制容器启动是有先后顺序的先下载对应版本的服务器再处理配置最后才跑起 Java。环境变量替换就发生在处理配置这一步——启动脚本遍历容器 /data 路径下的文件遇到${XXX}格式的占位符就去容器的环境变量里找 XXX找到就原地替换。这一步默认就是开着的REPLACE_ENV_IN_PLACE 默认为 true不用你额外声明。说白了你在配置里留了个坑启动脚本负责填。还有一道门槛CFG_ 前缀。默认只有带这个前缀的变量才允许参与替换所以${CFG_DB_HOST}会被替换而${DB_HOST}不会——这是防止容器里其他无关变量混进你的配置。用 REPLACE_ENV_VARIABLE_PREFIX 可以改前缀设成空字符串等于告诉它别挑了全换。先跑通一个改数据库地址先在插件的 database.yml 里写占位符database: host: ${CFG_DB_HOST}再在 compose 的 environment 里声明这个变量environment: CFG_DB_HOST: db.mynet.local:3306这样写的意思就是配置文件只留坑值由 compose 说了算。重启容器yml 里的 host 一行就变成你填的值镜像不用动。密码别明文写用 _FILE 后缀读文件数据库密码、RCON 密码这类敏感值别直接写进 compose 或 yml。做法是配置里的占位符照常写比如${CFG_DB_PASSWORD}环境变量这边则声明一个同名的_FILE后缀变量指向一个文件路径——用 compose 的 secrets 把密钥文件挂到 /run/secrets/db_password再声明CFG_DB_PASSWORD_FILE: /run/secrets/db_password。脚本读到_FILE后缀就会拿文件内容去做替换。换句话说密码只存在于那个文件里配置文件和 Git 仓库中都不会有明文。不是所有文件都要动替换的范围其实收得比较紧三件事各占一个变量后缀白名单默认只处理 .yml、.yaml、.txt、.cfg、.conf、.properties、.json、.toml 这些后缀存档和日志基本不会被扫到。排除单个文件REPLACE_ENV_VARIABLES_EXCLUDES 里填文件名不带路径即可。排除整个目录REPLACE_ENV_VARIABLES_EXCLUDE_PATHS 按路径递归排除比如某个插件的 userdata 目录。同步阶段是否替换REPLACE_ENV_DURING_SYNC 控制从 /plugins、/mods、/config 同步文件时是否顺带做替换默认关闭。比替换更精细JSON 补丁文本替换只能改已有行的值想新增一个字段、改个类型得上 JSON 补丁把 PATCH_DEFINITIONS 指到一个补丁文件JSON启动时就会对目标文件应用。补丁里的 ops 支持 $set、$put 这类操作例如对 paper.yml 写ops: [ { $set: { path: $.settings[velocity-support].enabled, value: true } } ]注意 value 里同样可以写${CFG_XXX}占位符所以 JSON 补丁和环境变量是配合使用的——连插件配置文件里根本没暴露的开关也能被钉死。常用 docker-minecraft-server 环境变量速查表变量说明默认值TYPE服务器类型VANILLA / PAPER / SPIGOT 等VANILLAEULAEULA 同意必须显式设置空VERSIONMinecraft 版本LATESTMOTD服务器登录消息Minecraft ServerDIFFICULTY难度easyENABLE_RCON是否启用 RCONtrueRCON_PASSWORDRCON 密码必须改掉默认值空RCON_PORTRCON 端口25575接下来你可以试试翻一翻 examples/docker-compose.yml 和 examples/ 下的其他 compose 示例看看别人是怎么声明 CFG_ 变量的。给 PATCH_DEFINITIONS 挂一个 JSON 文件试着给 paper.yml 打一个补丁。如果你还想了解更多完整变量表在 docs/variables.md。【免费下载链接】docker-minecraft-serverDocker image that provides a Minecraft Server for Java Edition that automatically installs/upgrades versions, modloaders, modpacks and more at startup项目地址: https://gitcode.com/GitHub_Trending/do/docker-minecraft-server创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表