Docker :: Docker 文件有问题 - 目标文件夹不可用

Docker :: Issue with Dockerfile - target folder not available

我有一个 spring 引导项目,并尝试在 circleci 持续集成服务器上使用 Docker 文件构建该项目。

问题是我的 github 仓库中只有我的源代码;没有目标目录或 jar 文件。我的 Docker 文件无法获得最终工件(将应用程序打包到 jar)。

请检查 Docker 文件并提出前进的方向。

FROM java:8
EXPOSE 8090
VOLUME /tmp
ADD target/spring-boot-rest-0.3.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=container","-jar","/app.jar"]

构建应用程序

首先您需要使用 Maven、Gradle 等构建您的应用程序。这将在您的目标目录中生成一个 Jar 文件。

示例:

mvn clean package

构建Docker图像

接下来您将构建 Docker 图像,它将使用在上一步中生成的 Jar 文件。确保您为 Jar 文件指定的路径与 Docker 文件的位置相关(这很重要!)

示例:

docker build -t example-company/example-image .

如果问题仍然存在,请分享任何错误日志或 GitHub 存储库 link。

您需要以某种方式打包一个 jar 来构建您的 docker 图像。

您可以在 docker 文件中安装 maven,并在构建容器时构建您的项目。这相当于将其他答案中描述的步骤自动化。

下面的示例假设您的 java 源位于 /code 目录中,并且您的 maven 包目标生成一个名为 target/spring-boot-rest-0.3.0.jar:

的 jar
FROM java:8
EXPOSE 8090
VOLUME /tmp
WORKDIR /code

RUN apt-get update  
RUN apt-get install -y maven

ADD pom.xml /code/pom.xml  
RUN ["mvn", "dependency:resolve"]  
RUN ["mvn", "verify"]

# Adding source, compile and package into a fat jar
ADD src /code/src  
RUN ["mvn", "package"]

ADD target/spring-boot-rest-0.3.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Dspring.profiles.active=container","-jar","/app.jar"]

然而,这似乎不是大多数 java 人的做法(尽管这是您将节点或 python 应用程序容器化的方式)。

人们似乎使用 Maven 构建 docker 图像。 circl.ci 支持 Maven 构建,所以这可能是您应该做的。这是我use.There一堆的插件:

https://github.com/spotify/docker-maven-plugin/blob/master/README.md

配置好 pom.xml 文件后,您将指示 Circl.ci 使用如下命令创建 docker 文件:

mvn clean package docker:build

无论您使用哪个插件,过程都是相似的。