屋宇署;在IntelliJ中运行Dockerfile

屋宇署;在IntelliJ中运行Dockerfile,docker,intellij-idea,Docker,Intellij Idea,我的问题如下: 如果我在命令控制台中键入此命令,它将起作用: docker build -f src/main/docker/Dockerfile.jvm -t hello . & docker run --name hello --rm -p 8080:8080 hello 但是如果我尝试在IntelliJ中使用“Run选项”,它就不起作用了。 我上面的命令有9个步骤,与IntelliJ类似,但第5个步骤似乎失败了。以下是配置: 此处显示失败生成的输出: 以下是成功案例: 它甚

我的问题如下:

如果我在命令控制台中键入此命令,它将起作用:

docker build -f src/main/docker/Dockerfile.jvm -t hello . & docker run --name hello --rm -p 8080:8080 hello
但是如果我尝试在IntelliJ中使用“Run选项”,它就不起作用了。 我上面的命令有9个步骤,与IntelliJ类似,但第5个步骤似乎失败了。以下是配置:

此处显示失败生成的输出:

以下是成功案例:

它甚至不像我的手动命令那样创建图像标签

最后但并非最不重要的是Dockerfile:

FROM fabric8/java-alpine-openjdk11-jre:latest

ENV JAVA_OPTIONS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
ENV AB_ENABLED=jmx_exporter

# Be prepared for running in OpenShift too
RUN adduser -G root --no-create-home --disabled-password 1001 \
  && chown -R 1001 /deployments \
  && chmod -R "g+rwX" /deployments \
  && chown -R 1001:root /deployments

COPY target/lib/* /deployments/lib/
COPY target/*-runner.jar /deployments/app.jar
EXPOSE 8080

# run with user 1001
USER 1001

ENTRYPOINT [ "/deployments/run-java.sh" ]

关键区别在哪里?我可以继续使用手动配置,但是运行配置会更平滑,因为构建上下文中只有3个文件。这似乎很奇怪。您可能需要指定“上下文文件夹”选项

谢谢!现在它构建并运行。我真的没想到。但有一个问题仍然存在:如果我运行两次,它不会删除旧图像,而是创建一个没有标记的新图像。我的手册删除旧的并创建新的。我如何在IntelliJ中实现这一点?因为每次手动删除并不比手动操作更好运行docker build从不删除旧图像,它只是将其名称更改为。您必须手动删除它们,或者运行一个简单的
docker系统prune
——强制构建rm是这里的解决方案@Fajeria但是手册总是创建一个新的,从来没有这样的问题你确定它会删除旧图像吗?它应该只删除中间容器您始终可以将--force rm添加到
构建选项
部分