【问题标题】:Docker creating a new image with an added Java applicationDocker 使用添加的 Java 应用程序创建新映像
【发布时间】:2016-04-18 00:58:23
【问题描述】:

假设我想在 dockerfile/java(来自 DockerHub)之上分发一个 Docker 映像,其中包含一个可执行 Jar 文件,该文件位于我的本地盒子中。我该怎么做?

bash-3.2$ 密码 /Users/czou/workspace/echodocker

bash-3.2$ cat Dockerfile

来自 dockerfile/java:latest

维护者 X Y

添加 ../testing/echoservice-0.1.0-SNAPSHOT/ /data/echoservice

曝光 8080

暴露 8081

bash-3.2$ ls ../testing/echoservice-0.1.0-SNAPSHOT/

bin 配置库

我们运行 'docker build .',它总是给我:

../testing/echoservice-0.1.0-SNAPSHOT/: 没有这样的文件或目录

文档要求构建上下文,它的真正含义是什么?我发现它非常令人困惑......

【问题讨论】:

    标签: java docker


    【解决方案1】:

    java应用的结构

    Demo
    └── src
    |    ├── main
    |    │   ├── java
    |    │   │   └── org
    |    │   │       └── demo
    |    │   │           └── .java
    |    │   └── resources
    |    │       └── application.properties
    |    └── test
    |         └── java
    |               └── org
    |                   └── demo
    |                         └── App.java  
    ├──── Dockerfile
    ├──── pom.xml
    

    Dockerfile 的内容

    FROM java:8
    EXPOSE 8080
    ADD /target/demo.jar demo.jar
    ENTRYPOINT ["java","-jar","demo.jar"]
    

    构建和运行映像的命令

    • 进入项目目录,比如说D:/Demo
    $ cd D/demo
    $ mvn clean install
    $ docker build demo .
    $ docker run -p 8080:8080 -t demo
    

    检查容器是否正在运行

    $ docker ps
    

    输出将是

    CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                    NAMES
    55c11a464f5a        demo1               "java -jar demo.jar"   21 seconds ago      Up About a minute   0.0.0.0:8080->8080/tcp   cranky_mayer
    

    Spring Boot with Docker查找视频

    【讨论】:

      【解决方案2】:

      在您的案例中,构建的上下文是 echodocker 目录,您的 Dockerfile 所在的位置。上下文目录的内容被传输到 Docker 守护进程(不同于在您的终端上运行的 docker 命令),它是实际执行构建命令的内容。这意味着它只能访问上下文目录中的内容。在这种情况下,您正在尝试在上下文目录之外添加一些内容,这些内容传输到 Docker 守护程序。所以,这行不通。

      要解决此问题,您可以将 Dockerfile 放在 echoservice-0.1.0-SNAPSHOT 目录中(然后它将成为您的上下文的一部分)。或者,您可以将echoservice-0.1.0-SNAPSHOT 符号链接到您的echodocker 目录,这将导致它作为上下文目录的一部分传输到守护程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-21
        • 2021-01-24
        • 2017-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多