0

我在 docker 中使用apiman工具。我制定了一项自定义政策。当我以独立模式(没有 docker)运行 apiman 时,apiman 能够从 .m2 存储库中获取该战争(策略)。但是当我在 docker 中使用 apiman 时,它不起作用。

  1. 有没有办法在 docker 容器中拥有 .m2 存储库以及 Wildfly 服务器?多阶段构建会在这里有所帮助吗?

这是我的码头文件

FROM  jboss/wildfly:10.1.0.Final
COPY  apiman_folder ${JBOSS_HOME}
#EXPOSE 8080 9990
USER root

RUN chown -R jboss:0 ${JBOSS_HOME} \
 && chmod -R g+rw ${JBOSS_HOME} 

USER jboss
ENTRYPOINT ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-c", "standalone-apiman.xml"]
4

1 回答 1

0

是的,如果你想在 Docker 文件中构建镜像时构建项目,多阶段构建可以解决问题:

# First stage for building project and generating apiman folder and policy 
From maven AS projectbuild
  #copy source code and recommanded tools 
COPY project_source_code  project_dir
WORKDIR project_dir
RUN mvn install #build your project at this l

# final build stage  copy resources from project build
FROM  jboss/wildfly:10.1.0.Final
COPY  --from=projectbuild apiman_folder ${JBOSS_HOME}
COPY  --from=projectbuild .m2/war_file_path(policy) <deployments_directory>
#EXPOSE 8080 9990
USER root

RUN chown -R jboss:0 ${JBOSS_HOME} \
 && chmod -R g+rw ${JBOSS_HOME} 

USER jboss
ENTRYPOINT ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0", "-c", "standalone-apiman.xml"]

文档链接

码头工人文档了解更多信息

dockerhub 中提供的 Maven 官方镜像

APIman 结构课程

我认为最好在机器上构建项目,然后复制策略并使用初始 Dockerfile 构建映像(仅复制策略而不是整个 .m2)。

于 2021-05-21T11:32:25.880 回答