Spring boot 无法使用Jar文件提交Docker中的容器

Spring boot 无法使用Jar文件提交Docker中的容器,spring-boot,docker,Spring Boot,Docker,我已经使用spring boot项目创建了一个Jar文件,容器名是cleer\u bohr,我想使用--change='CMD[“java”、“-Jar”、“/tmp/hello world rest api.Jar”]”提交容器。 但是它抛出的错误如下所示 C:\Development\Docker\docker-crash-course-master\01-hello-world-rest-api>docker commit --change='CMD ["java","-jar","

我已经使用spring boot项目创建了一个Jar文件,容器名是
cleer\u bohr
,我想使用
--change='CMD[“java”、“-Jar”、“/tmp/hello world rest api.Jar”]”提交容器。
但是它抛出的错误如下所示

C:\Development\Docker\docker-crash-course-master\01-hello-world-rest-api>docker commit --change='CMD ["java","-jar","/tmp/hello-world-rest-api.jar"]' clever_bohr clever_bohr2:latest
"docker commit" requires at least 1 and at most 2 arguments.
See 'docker commit --help'.

Usage:  docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

Create a new image from a container's changes
但是,当我删除
--change
命令时,它工作正常。我已经验证过了,jar文件存在于tmp目录中,如下所示

C:\Development\Docker\docker-crash-course-master\01-hello-world-rest-api>docker container exec clever_bohr ls /tmp
hello-world-rest-api.jar

可能Java路径没有设置。 尝试使用“/usr/bin/java”而不是java


或者,您的双引号字符可能不是“看起来很相似的东西”。

如果您使用的是windows,则可能是命令行中的单引号造成的问题

请尝试以下windows选项:

docker commit--change=“CMD”(“java”“-jar”“/tmp/hello world restapi.jar”)“聪明的”\u bohr聪明的”\u bohr2:最新版本

使用
docker commit
根本不是最佳实践。如果您编写Dockerfile并使用
docker build
构建映像,您可以将其添加到源代码管理中,并且它将是可复制的(并且您不需要奇怪的语法在命令行中包含Dockerfile命令)。其他Java问题往往有很短的DockerFile(基于主机上构建的jar文件),您可以研究这种方法。这些引号不应该转义吗?比如
--change=“CMD(\'Java\''-jar\''''/tmp/hello world rest api.jar\”)
没有必要。