如何从Spring Boot jar

时间:2018-03-25 13:32:23

标签: java spring docker spring-boot

我正在尝试从一个简单的Spring RESTful Web服务jar构建一个Docker镜像。

为此我已经指定了以下Dockerfile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
ADD ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

我正试图从我的IDEA cli“使用Maven构建Docker镜像”,如说明中所述here

./mvnw install dockerfile:build

不幸的是,这引发了异常:

Could not build image: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: java.io.IOException: Permission denied

由于我不知道如何解决这个问题,我尝试使用docker命令从终端构建图像:

$ docker build nordic/demo

创建了图片,但名称和标记为<none>。从docker documentations了解它,但没有说到这一点。

我是Docker的新手,所以我确定在如何构建Docker Image方面存在一些根本性的误解。主要是:

  1. 从终端构建时,Docker如何知道如何命名Image?
  2. 使用spotify插件构建时,为什么/使用插件需要什么权限(在构建之前登录到dockerhub没有帮助)?
  3. 感谢您的任何指示或解释!

3 个答案:

答案 0 :(得分:1)

使用下面的示例命令在/ var / run / docker中为your_own_username而不是root设置权限,然后尝试一下。

sudo chown -R root:your_own_username / var / run / docker

答案 1 :(得分:0)

spring boot docker

此链接有助于使用spring boot构建docker镜像。

<properties>
   <docker.image.prefix>springio</docker.image.prefix>
</properties>
<build>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.3.6</version>
            <configuration>
                <repository>${docker.image.prefix}/${project.artifactId}</repository>
    <buildArgs>
        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
    </buildArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

此插件包含在您的pom中,您可以在属性字段中更改图像名称。

如果您收到权限被拒绝错误,则必须使用 sudo 命令运行

答案 2 :(得分:0)

运行命令时:

docker build -t demo:1 .

字符串'demo:1'演示是repository名称和字符串后冒号'1'是tag的图像和点(。)到底意味着当前目录是build contextDockerfile居住的地方。

存储库可以包含许多图像,并且它们由标记唯一标识。如果你运行这样的命令而不提供标签:

docker build -t demo .

docker将在演示存储库中创建新图像,默认情况下使用image附加名为“latest”的标记,因此本例中的图像将为demo:latest。存储库演示将有2个图像演示:1和演示:最新。标记“最新”并不意味着图像是最新的,它只是标记的名称。