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
无论您使用哪个插件,过程都是相似的。
我有一个 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:
的 jarFROM 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
无论您使用哪个插件,过程都是相似的。