How to create docker image for local application taking file and value parameters

核能气质少年 提交于 2019-12-20 10:39:11

问题


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.


回答1:


  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.)




回答2:


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 .


来源:https://stackoverflow.com/questions/25364940/how-to-create-docker-image-for-local-application-taking-file-and-value-parameter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!