
mosaicgreifswald/wildflyWildFly镜像具有广泛的使用场景,可直接与Docker Compose配合使用,也可作为其他镜像的基础。该镜像无需先构建自定义镜像即可直接启动,当然也支持构建自定义镜像。
此Docker镜像内置三种健康检查策略:
微配置文件健康检查(Microprofile-Health)
默认策略,仅在设置WF_ADMIN_PASS变量时生效。WildFly管理端会自动检查所有安装了微配置文件的部署(详见:[***]
URL检查(URL-check)
需通过环境变量WF_HEALTHCHECK_URLS指定至少一个可访问的URL。若URL不可达或未返回HTTP 200状态码,健康状态将设为“不健康”。此策略可与微配置文件健康检查结合使用。
部署运行检查(Running-Deployments)
仅在未使用前两种策略时生效,仅检查是否存在启动失败的部署。
| 类别 | 变量名 | 可用值或格式 | 默认值 | 用途描述 |
|---|---|---|---|---|
| WF管理 | WF_NO_ADMIN | true | false | false | 设为true表示不需要WildFly管理员账户 |
| WF管理 | WF_ADMIN_USER | <字符串> | admin | 定义WildFly管理员用户名 |
| WF管理 | WF_ADMIN_PASS | <字符串> | -random- | 设置WildFly管理员密码 |
| 健康检查 | WF_HEALTHCHECK_URLS | <换行分隔的URL列表> | - | 包含用于检查容器健康状态的URL列表 |
| 优化配置 | TZ | <字符串> | Europe/Berlin | 时区设置 |
| 优化配置 | WF_ADD_CLI_FILTER | <竖线分隔的字符串> | - | 定义JBoss命令行界面需处理的额外文件扩展名 |
| 优化配置 | WF_MARKERFILES | true | false | auto | auto | 影响部署目录中标记文件(.isdeploying或.deployed)的创建 |
| 优化配置 | WF_MAX_POST_SIZE | <字节数> | *** | 接受的POST请求最大大小(字节) |
| 优化配置 | WF_MAX_PARAMETERS | <数字> | *** | 允许解析的最大参数数量 |
| 优化配置 | WF_MAX_CHILD_ELEMENTS | <数字> | 50000 | XML POST请求中允许的最大子元素数量 |
| 优化配置 | WF_BLOCKING_TIMEOUT | <秒数> | 300 | 进程取消前的阻塞超时时间(秒) |
| 优化配置 | WF_TRANSACTION_TIMEOUT | <秒数> | 300 | 事务自动终止前的超时时间(秒) |
| 优化配置 | WF_ENABLE_HTTP2 | true | false | false | 是否启用HTTP2支持 |
| 优化配置 | JAVA_OPTS | <字符串> | -Xms1G -Xmx6G ... | Java虚拟机参数(如需更多内存或自定义系统变量) |
| 安全配置 | WF_SERVER_KEYSTORE_PASSWORD | <字符串> | - | 与/entrypoint-wildfly-server-keystore配合使用的密钥库密码 |
| 安全配置 | WF_SERVER_KEYSTORE_ALIAS | <字符串> | - | 密钥库中存在多个证书时需指定的别名 |
| 日志配置 | WF_SYSTEM_LOG_LEVEL | TRACE | DEBUG | INFO | WARN | ERROR | FATAL | INFO | 设置控制台日志级别 |
| 日志配置 | WF_SYSTEM_LOG_TO | CONSOLE;FILE | CONSOLE | 日志输出目标(多值用分号分隔) |
| 调试配置 | WF_DEBUG | true | false | false | 设为true启用WildFly调试模式 |
| 调试配置 | DEBUG_PORT | <IP>:<端口> | *:8787 | 调试端口配置(IP:端口) |
shell# 查看更多环境变量 > docker run --rm mosaicgreifswald/wildfly envs
| 路径 | 关联环境变量 | 类型 | 用途描述 |
|---|---|---|---|
| /entrypoint-logs | ENTRY_LOGS | 文件夹 | 后续层可在子目录中存储日志文件 |
| /entrypoint-help-and-usage | ENTRY_USAGE | 文件夹 | 包含各Docker镜像层的README文件及使用示例 |
| /entrypoint-java-cacerts | ENTRY_JAVA_CACERTS | 文件 | 用于存储自定义CA证书(如特定Web请求或CA的服务器证书公钥) |
| /entrypoint-wildfly-cli | ENTRY_WILDFLY_CLI | 文件夹 | 启动WildFly前执行的JBoss命令行界面文件(只读访问) |
| /entrypoint-wildfly-deployments | ENTRY_WILDFLY_DEPLOYS | 文件夹 | 导入部署文件(如ear和war文件,只读访问,可选写访问) |
| /entrypoint-wildfly-addins | ENTRY_WILDFLY_ADDINS | 文件夹 | 导入部署所需的额外文件(只读访问) |
| /entrypoint-wildfly-logs | ENTRY_WILDFLY_LOGS | 文件夹 | 导出所有可用日志文件(读写访问) |
| /entrypoint-wildfly-server-keystore | ENTRY_WILDFLY_SERVER_KEYSTORE | 文件 | 用于服务器证书的密钥库 |
shell# 查看入口点详情 > docker run --rm mosaicgreifswald/wildfly entrypoints
shell# 构建WildFly镜像(需依赖mosaicgreifswald/zulujre:21基础镜像) > git clone [***] > cd mosaic-hgw/Docker/image/wildfly > docker build --tag="mosaicgreifswald/wildfly" --file="Dockerfile.wildfly.35" . # 查看已安装组件版本 > docker run --rm mosaicgreifswald/wildfly versions last updated : 2025-01-24 09:05:05 Architecture : x86_64 Distribution : Debian GNU/Linux 12.9 zulu-jre : 21.0.6 WildFly : 35.0.0.Final MySQL-Connector : 9.2.0 EclipseLink : 4.0.5 # 简单启动(带部署文件且无需WildFly管理员用户) > docker run --rm \ -e WF_NO_ADMIN=true \ -p 8080:8080 \ -v /本地部署文件路径:/entrypoint-wildfly-deployments \ mosaicgreifswald/wildfly # 只读部署目录配置(禁用标记文件) > docker run --rm \ -e WF_ADMIN_PASS=top-secret \ -e WF_MARKERFILES=false \ -e WF_HEALTHCHECK_URLS=http://localhost:8080\nhttp://localhost:8080/your-app.html \ -p 8080:8080 \ -p 9990:9990 \ -v /本地CLI文件路径:/entrypoint-wildfly-cli \ -v /本地只读部署文件路径:/entrypoint-wildfly-deployments \ mosaicgreifswald/wildfly
通过卷挂载主机目录时,默认文件所有者为内部mosaic用户(UID:GID=1111:1111)。需为主机可写目录授予该用户权限:
sh# 在主机执行 chown -R 1111:1111 deployments logs
注意:部署目录不一定需要写权限。若禁用写权限,WildFly将不生成标记文件。
可通过Docker参数--user/-u修改写入用户(UID:GID):
sh# 修改日志等可写卷的所有者(UID:GID) > docker run --rm -d \ -u 1006:1001 \ -e WF_SYSTEM_LOG_TO=FILE \ -v /本地日志路径:/entrypoint-wildfly-logs \ mosaicgreifswald/wildfly # 查看主机日志目录权限 > ls -la /本地日志路径 总用量 8 drwxr-xr-x 2 1006 1001 4096 12月 11日 10:25 . drwxrwxrwt 10 root root 4096 12月 11日 10:26 .. -rw-r--r-- 1 1006 1001 0 12月 11日 10:25 server.log drwxr-xr-x 2 1006 1001 4096 12月 11日 10:25 system
与MySQL数据库联动的部署示例:
yml# docker-compose.yml version: '3' services: mysql: image: mysql environment: MYSQL_ROOT_PASSWORD: top-secret volumes: - /本地SQL初始化文件路径:/docker-entrypoint-initdb.d wildfly: image: mosaicgreifswald/wildfly ports: - 8080:8080 - 9990:9990 depends_on: - mysql environment: WF_ADMIN_PASS: top-secret WF_HEALTHCHECK_URLS: | http://localhost:8080 http://localhost:8080/your-app.html volumes: - /本地CLI文件路径:/entrypoint-wildfly-cli - /本地部署文件路径:/entrypoint-wildfly-deployments entrypoint: /bin/bash command: -c "./wait-for-it.sh mysql:3306 -t 60 && ./run.sh"
JBoss命令行界面(CLI)文件是包含一系列JBoss服务器命令的文本文件,用于自动化部署、配置系统设置或执行管理操作。通过CLI文件可在不修改镜像的情况下自定义WildFly配置,所有调整均可通过CLI文件传入。
添加MySQL数据源
sh# add-mysql-datasource.cli data-source add \ --name=MySQLPool \ --jndi-name=java:/jboss/MySQLDS \ --connection-url=jdbc:mysql://mysql:3306/dbName \ --user-name=mosaic \ --password=top-secret \ --driver-name=mysql
添加PostgreSQL驱动模块及数据源
sh# add-postgre-datasource.cli batch module add \ --name=org.postgre \ --resources=/entrypoint-wildfly-cli/postgresql.jar \ --dependencies=javax.api,javax.transaction.api /subsystem=datasources/jdbc-driver=postgre: \ add( \ driver-name="postgre", \ driver-module-name="org.postgre", \ driver-class-name=org.postgresql.Driver \ ) data-source add \ --name=PostgreSQLPool \ --jndi-name=java:/jboss/PostgreSQLDS \ --connection-url=jdbc:postgresql://app-db:5432/dbName \ --user-name=mosaic \ --password=top-secret \ --driver-name=postgre run-batch
shell# 查看所有附加文件 > docker run --rm -it mosaicgreifswald/wildfly bash -c "cd /entrypoint-help-and-usage; ls -lah --color; bash" # 复制到本地 > docker run --rm -v "$(pwd)":"$(pwd)" mosaicgreifswald/wildfly bash -c "cp -R /entrypoint-help-and-usage $(pwd)/help-and-usage"
附加文件目录结构:
├─┬─ layer-readme/ │ ├─── README-debian.md │ ├─── README-wildfly.md │ └─── README-zulujre.md └─┬─ examples/ ├─┬─ compose-wildfly-dbdriver/ │ ├─── jboss/ │ └─┬─ add_x_driver.cli │ └─── docker-compose.yml ├─┬─ compose-wildfly-empty/ │ ├─── addins/ │ ├─┬─ envs/ │ │ └─── wf_commons.env │ ├─── jboss/ │ ├─── logs/ │ ├─── sqls/ │ └─── docker-compose.yml └─┬─ pure-envs/ ├─── debian.env ├─── wf_commons.env └─── zulujre.env
| 日期 | 标签 | 变更内容 |
|---|---|---|
| 2025-03-05 | 35-20250305, 35, latest (Dockerfile) | WildFly 35.0.1.Final |
| 2025-01-24 | 35-20250124 (Dockerfile) | openJRE 21.0.6 MySQL-Connector 9.2.0 |
| 2025-01-09 | 35-20250113 (Dockerfile) | Debian 12.9 "bookworm" WildFly 35.0.0.Final EclipseLink 4.0.5 支持--user/-u参数 |
| 2025-01-13 | 34-20250113, 34 (Dockerfile) | Debian 12.9 "bookworm" EclipseLink 4.0.5 支持--user/-u参数 |
| 2024-11-26 | 34-20241126 (Dockerfile) | WildFly 34.0.1.Final |
| 2024-11-11 | 34-20241111 ([Dockerfile]([***] |

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务