docker - 为Dockerhub自动化构建编写Dockerfile

标签 docker dockerfile

我是Docker的新手,因此正面临一个非常基本的问题。

我有一个Maven项目。在本地环境中,我要做的就是运行项目:

mvn clean package jetty:run

我现在正在尝试将其打包为链接到github存储库的自动化dockerhub构建。这是我已采取的步骤:
  • 如下创建一个Dockerfile并将其添加到基本文件夹
  • 将代码提交到github
  • 在dockerhub中创建并将Autobuild存储库链接到Github存储库。
  • 进行必要的更改以指向特定的分支和Dockerfile

  • 提交更改后,我可以看到它触发了构建,并且构建成功。但是,当我运行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/

    相关文章:

    docker - Docker会协助作为高级压缩器吗?

    docker - 在Windows 7中构建Docker镜像时出错

    docker - 构建上下文大小会影响图像大小吗?

    macos - docker 使用 xhyve 在 osx 上编写挂载主机目录

    docker - "best practices"为什么Docker官方镜像不使用USER

    docker - 如何更改现有的Docker容器选项

    docker - 如何使用 docker-machine 和 VirtualBox 创建基于 ubuntu 的 docker 主机?

    docker - 有没有办法在构建容器时内省(introspection)图像值?

    Gluster 的 Dockerfile ... 创建容器时无法启动服务

    docker - Docker构建:来自一层的内容是否保留在下一层?