我是Docker的新手,因此正面临一个非常基本的问题。
我有一个Maven项目。在本地环境中,我要做的就是运行项目:
mvn clean package jetty:run
我现在正在尝试将其打包为链接到github存储库的自动化dockerhub构建。这是我已采取的步骤:
提交更改后,我可以看到它触发了构建,并且构建成功。但是,当我运行docker镜像时,它返回以下错误:
docker: Error response from daemon: Container command 'mvn clean package jetty:run' not found or does not exist..
这是文件夹结构:
/Dockerfile
/pom.xml
/src/<folders that contain the code>
这是我在Dockerfile中拥有的内容:
FROM maven:3.3.9-jdk-8
CMD ["mvn clean package jetty:run"]
我想我错过了将代码的副本提取到容器中的想法。但是最好的方法是什么?我尝试了
COPY
命令,但无法使其工作。请帮忙。
最佳答案
这里的问题是,“mvn”是命令,“clean”,“package”和“jetty:run”是它的参数。 bash之类的shell会自动将它们分开。 Docker没有。
CMD [“mvn clean package jetty:run”]使docker搜索名称类似“/ usr / bin / mvn clean package jetty:run”的文件,该文件当然不存在。
正确的格式是:
CMD ["executable","param1","param2"]
在您的情况下:
CMD ["/usr/bin/mvn", "clean", "package", "jetty:run"]
关于docker - 为Dockerhub自动化构建编写Dockerfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36853002/