如何在docker中创建Spring启动应用程序映像

时间:2018-05-06 12:27:00

标签: docker

我创建了一个Spring启动应用程序。 现在我想为它创建一个docker图像并将其作为docker容器运行。

2 个答案:

答案 0 :(得分:0)

最简单的方法是将jar添加到容器中并使用docker-compose

运行它

您可以使用以下泊坞窗文件

FROM openjdk:8

WORKDIR opt
ADD app-0.0.1-SNAPSHOT.jar app.jar

ENTRYPOINT ["java", "-jar", "app.jar"]

以及以下docker-compose.yml

version: '3'
services:
  web:
    build:
      dockerfile: .
    ports:
     - "8080:8080"
    volumes:
     - /app/src/main/resources/static:/opt/static #should match the actual path

您稍后可以添加db服务等

所有文件应驻留在同一文件夹中,并且卷中的路径应与prj

匹配

使用

可以实现更复杂的方法
  • 使用git将项目源代码下载到docker并运行mvn来构建jar,需要很长时间
  • 从git
  • 下载生产jar

使用这些appraoches,容器可以自我部署,并且在源代码更改时不需要维护docker prj

答案 1 :(得分:0)

早上好,下午好或晚安!

好吧...要创建您的Spring Boot应用程序的映像,我建议在项目的根目录下创建一个名为Dockerfile的文件。

之后,只需在Dockerfile文件中插入以下设置:

#Image of the application execution package in question
FROM openjdk:8-jdk-slim
FROM maven:3.2-jdk-8

#Creating application directory
RUN mkdir /app

#Creating application directory
WORKDIR /app

#Copy the .jar to the working directory
COPY target/<NAME_PROJECT>.jar /app

#Port configuration
EXPOSE <EXTERNAL_PORT>:<INTERNAL_PORT>

#Command to run the application
CMD ["java","-jar","<NAME_PROJECT>.jar"]

创建Dockerfile之后,只需运行以下命令即可从Spring Boot应用程序创建Docker映像:

docker build -t <NAME_IMAGE> .

创建图像后,让我们从该图像运行一个容器:

docker run -it -d –name <NAME_CONTAINER> -p <EXTERNAL_PORT>:<INTERNAL_PORT> <NAME_IMAGE>

一些观察结果:

我假设您正在使用Java 8开发应用程序,并使用maven 3.2来构建应用程序,因此在Dockerfile的图像声明中,我为此放置了相关图像。但是,如果您使用不同版本的Java和Maven开发应用程序,建议您在Dockerhub存储库中搜索与开发项目的版本相关的映像。以下是直接带您搜索所需图像的链接:

Dockerhub Java

Dockerhub maven

如果您想进一步了解Docker令人印象深刻的技术,只需访问我的博客并关注有关以下方面的许多事情:

Docker article

Learning to use the Dockerfile

Containers Docker

我建议的另一件事是,给项目一个mvn clean install,以便Dockerfile可以找到您的应用程序。

如果您正在使用maven和执行文件(即jar)开发Spring应用程序,那么我也在谈论所有这一切,否则,如果您正在使用另一种方法,只需根据您的Dockerfile逻辑进行设置即可。 Spring项目的配置。