27 lines
2.1 KiB
Markdown
27 lines
2.1 KiB
Markdown
# Podman 测试镜像构建
|
||||
|
|
|
|||
|
|
在 `admin-api` 目录执行,先把 `JAVA_HOME` 设置为本机 **JDK 8** 路径:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
export JAVA_HOME=/path/to/jdk8
|
|||
|
|
./build.sh -t localhost/admin-api:1.2.1-pg-test
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
- Maven 依赖、插件及其元数据默认缓存到 **`../chengdu-repository`**,以脚本所在的项目目录为基准,不受调用位置影响,也不修改全局 Maven 配置。
|
|||
|
|
- 等效 Maven 参数是 `-Dmaven.repo.local=/absolute/path/to/chengdu-repository`。可以用 `./build.sh -r /other/repository -t localhost/admin-api:1.2.1-pg-test` 覆盖目录。
|
|||
|
|
- 应用构建产物仍是 `target/admin-api-1.2.1-SNAPSHOT.jar`,不会放进依赖缓存目录。修改项目版本后需同步脚本中的 `JAR_FILE`。
|
|||
|
|
- 镜像默认名为 `localhost/admin-api:1.2.1-pg-test`;`-t` 指定完整镜像名和 tag,**不会自动读取 Maven 版本**。
|
|||
|
|
- 使用完整 Maven Wrapper;仓库当前 Wrapper 不完整时回退到本机 `mvn`,请使用支持 JDK 8 的 Maven 3。
|
|||
|
|
- 编译使用 `package -DskipTests`,成功后检查 `BOOT-INF/lib/postgresql-*.jar`;驱动缺失立即停止。
|
|||
|
|
- 编译、驱动检查和镜像构建统一由 `build.sh` 完成,Dockerfile 内嵌在脚本中,通过标准输入传给 Podman,无需单独的 `Dockerfile.podman`。基础镜像为公开的 `docker.io/library/eclipse-temurin:8-jre-jammy`。`--pull=always` 强制从仓库拉取基础镜像,不依赖预先存在的本地镜像,也不访问旧私有镜像仓库;构建机器需能访问 Docker Hub 和配置的 Maven 仓库。
|
|||
|
|
- 原 `Dockerfile` 保留不变,仍属于旧的私有镜像构建流程。
|
|||
|
|
- 脚本只构建,不推送、不启动容器;中间件 Compose 不会自动启动此 API。加入 PostgreSQL 驱动不等于切换数据源,数据库配置和 SQL 兼容性仍需单独验证。
|
|||
|
|
|
|||
|
|
只编译、不构建镜像时:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
mvn -Dmaven.repo.local="$(pwd)/../chengdu-repository" package -DskipTests
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
参考:[Temurin 官方镜像](https://hub.docker.com/_/eclipse-temurin)、[PostgreSQL JDBC 下载与 Java 兼容性](https://jdbc.postgresql.org/download/)。
|