java - 如何为获取文件和值参数的本地应用程序创建 docker 镜像

标签 java virtual-machine docker

我有一个 java 应用程序(jar 文件),我希望能够从 docker 镜像运行。

我已经创建了一个 Dockerfile 来创建一个使用 centos 作为基础的镜像并安装 java:

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

我运行 docker build -t me/java7 后得到镜像 me/java7

但是我陷入了一些死胡同。

  1. 如何将 jar 文件从主机复制到镜像/容器中
  2. 我需要 2 个参数。 1是一个文件,需要在运行时复制到一个目录到容器中。另一个是一个数字,当用户使用参数运行docker run时,需要在java -jar命令中自动传递给jar文件

补充说明:

jar 文件是本地文件。不托管任何可通过 wget 或任何东西访问的地方。我目前最接近的是包含它的 Windows 共享。我也可以从 git 存储库访问源代码,但这将涉及编译所有内容并在镜像上安装 maven 和 git,所以我宁愿避免这样做。

非常感谢任何帮助。

最佳答案

  1. 在 Dockerfile 中,使用 ADD 添加一个本地文件,例如:g

    ADD your-local.jar /some-container-location
    
  2. 您可以使用卷在运行时将文件放入容器中,例如 g

    VOLUME /copy-into-this-dir
    

    然后你运行使用

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

    您可以使用 ENTRYPOINT 和 CMD 来传递参数,例如 g

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

    然后再次运行使用

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

(看看 Dockerfile documentation 。)

关于java - 如何为获取文件和值参数的本地应用程序创建 docker 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25364940/

相关文章:

java - 无法读取工件 'org.apache.tiles:tiles-core:jar' 的元数据文件

java - 如何在java中检查新记录是否插入到数据库

linux - 使用 tomcat 从 vmware 沙箱发送电子邮件

oracle - 如何将文件复制到虚拟盒oracle盒中

linux - 在linux上安装后无法启动docker

java - Java/J2EE标准实践和设计选择

java - 在 Java 程序中从 Maven 存储库下载 Artifact

windows - 我该如何解决 VBoxManage.exe : error: Format autodetect failed: VERR_FILE_NOT_FOUND

docker - Netstat 未显示 docker 暴露的端口

mysql - 从 ansible 运行 mysql :5. 5 docker 镜像