How to create docker image for local application t

2019-03-13 03:39发布

I have a java application (jar file) that I want to be able to run from a docker image.

I have created a Dockerfile to create an image using centos as base and install java as such:

Dockerfile
FROM centos
RUN yum install -y java-1.7.0-openjdk

I ran docker build -t me/java7 after to obtain the image me/java7

however I am stuck at some dead ends.

  1. How do I copy the jar file from the host into the image/container
  2. I require 2 parameters. 1 is a file, which needs to be copied into a directory into the container at runtime. The other is a number which needs to be passed to the jar file in the java -jar command automatically when the user runs docker run with the parameters

Extra Notes:

The jar file is a local file. Not hosted anywhere accessible via wget or anything. The closest I have at the moment is a windows share containing it. I could also access the source from a git repository but that would involve compiling everything and installing maven and git on the image so I'd rather avoid that.

any help is much appreciated.

2条回答
劫难
2楼-- · 2019-03-13 04:04
  1. In the Dockerfile, add a local file using ADD, e g

    ADD your-local.jar /some-container-location
    
  2. You could use volumes to put a file in the container in runtime, e g

    VOLUME /copy-into-this-dir
    

    And then you run using

    docker run -v=/location/of/file/locally:/copy-into-this-dir -t me/java7
    

    You can use ENTRYPOINT and CMD to pass arguments, e g

    ENTRYPOINT ["java", "-jar", "/whatever/your.jar"]
    CMD [""]
    

    And then again run using

    docker run -v=/location/of/file/locally:/copy-into-this-dir -t me/java7 --myNumber 42
    

(Have a look at the Dockerfile documentation.)

查看更多
▲ chillily
3楼-- · 2019-03-13 04:07

Suppose your file structure is as follow :

DockerTest
        └── Dockerfile
        └── local.jar

Dockerfile content will be :

FROM centos
RUN yum install -y java-1.7.0-openjdk
EXPOSE 8080
ADD /local.jar fatJar.jar
ENTRYPOINT ["java","-jar","fatJar.jar"]

Use following command :

$ cd DockerTest
$ docker build -f Dockerfile -t demo .
查看更多
登录 后发表回答