使在 pre_build 中创建的 docker 映像可用于 docker 集线器上的构建阶段?

make a docker image created in pre_build available for the build phase on docker hub?

我尝试创建一个基于 Oracle 数据库 XE 的 docker 映像。

情况有点特殊。 Oracle 提供了一个 repository,其中包含创建此类映像所需的脚本。这些图像不能直接在 docker 集线器上使用。

该脚本创建一个名为 oracle/database:18.4.0-xe

的图像

我使用该图像通过 COPY 语句复制某些文件。参见 Dockerfile

我的想法是使用 pre_build 脚本克隆 oracle 存储库,创建该映像,然后简单地 运行 在 docker 集线器上构建。但似乎图像已创建,但在构建阶段不可用。 COPY 语句失败,因为找不到该图像。

是否还有其他事情要做,使该图像在构建阶段可用?

我设法通过将另一个 FROM 添加到 Docker 文件

来实现它
FROM diemobiliar/oraclexe-image:18.4.0-xe as oraclexe

FROM oraclelinux:7-slim

COPY --from=oraclexe --chown=oracle:oinstall\
  ${ORACLE_HOME}/lib/libsqlplus.so\

并将图像上传到它自己的存储库中。不确定为什么这在本地有效,但在 docker 集线器上构建期间却无效。我假设一些 Docker 版本问题。在 pre_build 脚本中创建的 docker 图像在构建阶段也可见,只有 copy --from=... 语句目前似乎在直接引用图像方面存在一些问题。

互联网上有更多使用该语法但也依赖于 BuildKit 的示例(即使对于我的用例来说这可能更优雅,但我还没有尝试过)。

无论如何找到了某种解决方法,所以现在我很好。