
myquartz/tomcat-xslt该镜像包含用于构建带有LibXSLT的Apache Tomcat的脚本,LibXSLT用于XML配置文件(如server.xml和context.xml)的处理。支持多种Tomcat版本与JDK组合,以及AMD64和ARM64/v8平台。
<GlobalNamingResources />以添加资源适用于需要自定义Tomcat配置(如端口、数据源、认证领域)的Web应用部署,尤其适合需要动态调整XML配置文件的场景。
需定义环境变量DEPLOY_CONTEXT指定应用war包名称,若未定义则默认使用ROOT.war。
通过以下环境变量修改Tomcat监听端口:
<Connector />元素<Connector />元素(暂不包含密钥库)<Connector />元素根据环境变量在context.xml(上下文级)或server.xml(全局级)中添加数据源。
| 环境变量 | 说明 | 类型 |
|---|---|---|
| DB_SOURCENAME | 上下文级数据源名称,如:jdbc/data_source | 上下文级(必填) |
| GLOBAL_DB_SOURCENAME | 全局级数据源名称,如:jdbc/data_source | 全局级(必填) |
| DB_CLASS | JDBC驱动类名,如:org.h2.Driver或com.mysql.cj.jdbc.Driver | 必填 |
| DB_URL | JDBC连接URL,如:jdbc:h2:mem:test或jdbc:mysql:server:port/dbname | 必填 |
| DB_USERNAME | 数据库连接用户名 | 可选 |
| DB_PASSWORD 或 DB_PASSWORD_FILE | 数据库连接密码或包含密码的文件路径 | 可选 |
| DB_POOL_MAX | 连接池最大连接数,默认50 | 可选 |
| DB_POOL_INIT | 数据源启动时的初始连接数,默认0 | 可选 |
| DB_IDLE_MAX | 最大空闲连接数 | 可选 |
| DB_VALIDATION_QUERY | 连接验证查询语句,默认空 | 可选 |
xml<Resource auth="Container" type="javax.sql.DataSource" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" minIdle="0" name="${DB_SOURCENAME}或${GLOBAL_DB_SOURCENAME}" driverClassName="${DB_CLASS}" url="${DB_URL}" username="${DB_USERNAME}" password="${DB_PASSWORD}" maxActive="${DB_POOL_MAX}" initialSize="${DB_POOL_INIT}" maxIdle="${DB_IDLE_MAX}" validationQuery="${DB_VALIDATION_QUERY}" />
基于数据源中的用户表实现Servlet/应用认证,根据上下文级或全局级数据源自动配置对应领域。
| 环境变量 | 说明 |
|---|---|
| REALM_USERTAB | 存储用户数据的表名 |
| REALM_ROLETAB | 存储用户角色数据的表名 |
| REALM_USERCOL | 用户名列名,默认"username" |
| REALM_CREDCOL | 哈希密码列名,默认"hashpassword"(哈希密码详情见Tomcat文档) |
| REALM_ROLECOL | 用户角色列名 |
| ALL_ROLES_MODE | "allRolesMode"属性值,可选"strict"、"authOnly"或"strictAuthOnly" |
| REALM_ALGORITHM | 密码哈希算法,默认SHA-512,可选SHA-1、SHA-256等 |
| REALM_INTERATIONS | 哈希迭代次数,建议设为1 |
| REALM_SALT_LENGTH | 盐值长度 |
| REALM_ENCODING | 哈希时的字符编码,如UTF-8 |
xml<Realm className="org.apache.catalina.realm.DataSourceRealm" dataSourceName="${DB_SOURCENAME}或${GLOBAL_DB_SOURCENAME}" userTable="${REALM_USERTAB}" userNameCol="${REALM_USERCOL}" userCredCol="${REALM_CREDCOL}" userRoleTable="${REALM_ROLETAB}" roleNameCol="${REALM_ROLECOL}" allRolesMode="${ALL_ROLES_MODE}"> <!-- 若定义REALM_ALGORITHM和REALM_INTERATIONS则包含以下内容 --> <CredentialHandler className="org.apache.catalina.realm.MessageDigestCredentialHandler" algorithm="${REALM_ALGORITHM}" interations="${REALM_INTERATIONS}" saltLength="${REALM_SALT_LENGTH}" encoding="${REALM_ENCODING}" /> </Realm>
dockerfileFROM myquartz/tomcat-xslt:9-jdk11 # 从Maven下载JDBC驱动 RUN curl -sSo /usr/local/tomcat/lib/mysql-connector-java-8.0.30.jar [***] # RUN curl -sSo /usr/local/tomcat/lib/postgresql-42.5.4.jar [***] ENV TOMCAT_HTTP_PORT=8088 EXPOSE 8088 ENV DEPLOY_CONTEXT=booking ENV DB_SOURCENAME=jdbc/ds ENV DB_CLASS=com.mysql.cj.jdbc.Driver ENV DB_URL=jdbc:mysql://mysqldb:3306/dbname ENV DB_USERNAME=db_username ENV DB_PASSWORD= COPY target/booking.war /usr/local/tomcat/webapps/booking.war
shellmvn package docker build -t booking-app . docker run -d -p 8088:8088 -e DB_URL=jdbc:mysql://your-db-server-ip:3306/dbname -e DB_USERNAME=you -e DB_PASSWORD=your-password booking-app
访问演示地址:http://localhost:8088/booking
更多信息请访问GitHub页面:[***]

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务